一、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方法
以上資源都是通過網上資料整理而得,不足之處請多多指教