天天看點

Android面試題目整理(自用)

一、Activity的生命周期

         正常啟動:onCreate->onStart->onResume

        finish:onPause->onStop->onDestroy

        被終止(例如來電話):onPause->onStop 後被恢複:onStart-onResume

        被打斷(如彈出一個Theme為Dialog的Activity):onPause    恢複:onResume

       onCreate:建立界面以及一些資料的初始化

       onStart:使用者可見但不可互動

       onResume:可和使用者互動;恢複儲存的資料

       onPause:可見不可互動,系統會停止動畫等消耗CPU的事情;儲存資料

       onStop:不可見,被下一個activity覆寫

       onDestroy:activity被finish掉前調用的最後一個方法,如果有Dialog線上程啟動,需在該方法中cancel掉,否則等線程結束後再調用cancel會抛出異常

注:在onPause、onStop和onDestroy三種狀态下,activity可能會被系統finish掉

二、Android中的動畫有哪幾類,他們的特點和差別是什麼?

      1、Tween動畫:可實作視圖元件的移動、放大、縮小以及産生透明度的變化;

      2、Frame動畫:傳動動畫方法,通過順序的播放排列好的圖檔來實作

三、Handler機制的原理

      Android提供了Handler和Loop而來滿足線程間的通信。

     Handler先進先出原則。

     Looper類用來管理特定線程内對象之間的資訊交換(Message Exchange)

    1、Looper:一個線程可以産生一個Looper對象,由它來管理此線程裡的Message Queue(消息隊列);

    2、Handler:可構造Handler對象與Looper溝通,以便push新消息到Message Queue裡;或者接收Looper從Message Queue取出)送來的消息;

    3、Message Queue:用來存放線程放入的消息

    4、線程:UI thread 通常就是main thread,而Android啟動程式時就會替它建立一個Message Queue

四、請介紹下Android中常用的五種布局

      1、FrameLayout(架構布局)

      2、LinearLayout(線性布局)

      3、AbsoluteLayout(絕對布局)

      4、RelativeLayout(相對布局)

      5、TableLayout(表格布局)

五、請介紹下Android的資料存儲方式

        1、SharedPreference

       2、檔案存儲方式

       3、SQLite資料庫

       4、内容提供器(Content Provider)

       5、網絡存儲

六、請介紹下ContentProvider是如何實作資料共享的

        建立一個ContentProvider或者将資料添加到一個已經存在的ContentProvider中,前提是有相同的資料類型并且有寫入ContentProvider的權限

七、如何啟用和停用Service

       1、編寫一個繼承Service的類

        2、在AndroidManifest.xml中對該Service進行注冊

        3、通過Context.startService()或者Context.bindService()方法啟動服務

                startService()方法啟動服務,調用者與服務之間沒有關聯,即使調用者退出了,服務仍然運作;

                bindService()方法啟動服務,調用者與服務之間綁定在了一起,調用者一旦退出,服務也就終止了。

       4、其分别對應stopService()和unbindService()方法來停用服務

八、注冊廣播有幾種方式,這些方式有何優缺點?請談談Android引入廣播機制的用意。

       1、動态注冊(在Java代碼中注冊)

            該廣播不是常駐型廣播,廣播會跟随程式的生命周期

       2、靜态注冊(在AndroidManifest.xml中注冊)

           該廣播為常駐型廣播,當程式關閉後,如果有資訊廣播來,程式也會被系統自行運作起來。

九、橫豎屏切換的時候Activity的生命周期

      1、不設定Activity 的android:configChanges時,切屏會重新調用各個生命周期,切模屏時會執行一次,切豎屏時會執行兩次;

      2、設定Activity 的android:configChanges="orientation" 時,切屏還是會重新調用各個生命周期,切橫、豎屏時隻會執行一次;

      3、設定Activity 的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,隻會執行onConfigurationChanged方法

以上資源都是通過網上資料整理而得,不足之處請多多指教

繼續閱讀