第一部分
1.Android
中的動畫有哪幾類?
兩種:Tween(補間)動畫Frame(幀)動畫Tween 動畫可以使視圖組件移動、放大、縮小以及產生透明度的變化;Frame 動畫通過順序的播放排列好的圖片來實現,類似電影;
2.Handler
機制的原理
Android
提供了Handler 和 Looper 來滿足線程間的通信。
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。
3. Activity 生命週期
4. Intent - 通信的使者
1)顯示調用和隱式調用
顯示Intent : 通過指定Intent組件名稱來實現的,它一般用在知道目標組件名稱的前提下,一般是在相同的應用程序內部實現的。
隱式Intent : 通過Intent Filter 來實現的,它一般用在沒有明確指出目標組件名稱的前提下,一般是用在不用應用程序之間
5. ANR是什麼?如何儘量避免?
Application Not Responding , 5秒。
1)儘量避免在主線程做太多耗時的操作
2)如需處理耗時的操作可以新建一個子線程
6. 有哪些情況會導致Force Close?
1) 常見有空指針
7. Android 4大組件是?
Activity 、Service 、BroadcastReceiver 、Content Provider
8. Activity 橫豎屏切換時生命週期調用
1)不設置Activity的android:configChanges時,切屏會重新調用各個生命週期,切橫屏時會執行一次,切豎屏時會執行兩次。
2)設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命週期,切橫、豎屏時只會執行一次。
3)設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命週期,只會執行onConfigurationChanged方法
9. 如何將SQLite數據庫(dictionary.db文件)與APK文件一起發佈?
將dictionary.db文件放到res raw 目錄下。
10. 如何打開res raw 目錄中的數據庫文件?
在Android中不能直接打開res raw目錄中的數據庫文件,而需要在程序第一次啓動時將該文件複製到手機內存或SD 卡的某個目錄下,然後再打開該數據庫文件。
複製的基本方法是使用getResources().openRawResource方法獲得res raw目錄中資源的InputStream對象,然後將該InputStream對象中的數據寫入其他目錄中相應文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDataBase
方法來打開任意目錄中的SQLite數據庫文件。
收錄一些常用的面試題目含參考答案(二)