Android 中高級核心複習面試題整理,備戰年後金三銀四! 一、Android基礎 二、Android進階 1. app啓動 2. 網絡庫 3. 內存優化 三、設計模式

一、Android基礎

1. basic

  • Serializable和Parcelable區別

一個簡單,但效率低;

一個高效,但使用麻煩。

世事兩難全呀。

2. 組件

2.1 Activity

1)Activity lifecycle

onCreate() 創建活動,做一些數據初始化操作

onStart() 由不可見變爲可見

onResume() 可以與用戶進行交互,位於棧頂

onPause() 暫停,啓動或恢復另一個活動時調用

onStop() 停止,變爲不可見

onDestroy() 銷燬

onRestart() 由停止狀態變爲運行狀態

2) Activity的啓動方式

①.standard模式

a.Activity的默認啓動模式

b.每啓動一個Activity就會在棧頂創建一個新的實例。例如:鬧鐘程序

缺點:當Activity已經位於棧頂時,而再次啓動Activity時還需要在創建一個新的實例,不能直接複用。

②.singleTop模式

特點:該模式會判斷要啓動的Activity實例是否位於棧頂,如果位於棧頂直接複用,否則創建新的實例。 例如:瀏覽器的書籤

缺點:如果Activity並未處於棧頂位置,則可能還會創建多個實例。

③.singleTask模式

特點:使Activity在整個應用程序中只有一個實例。每次啓動Activity時系統首先檢查棧中是否存在當前Activity實例,如果存在

則直接複用,並把當前Activity之上所有實例全部出棧。例如:瀏覽器主界面

④.singleInstance模式

特點:該模式的Activity會啓動一個新的任務棧來管理Activity實例,並且該勢力在整個系統中只有一個。無論從那個任務棧中啓動該Activity,都會是該Activity所在的任務棧轉移到前臺,從而使Activity顯示。主要作用是爲了在不同程序中共享一個Activity

3) onCreateMenuOption 在Activity哪個生命週期被調用到?

onResume

4)Activity & Window

3. Binder機制

這塊內容好多。。

先來個圖看看,哈哈。

系統結構圖。

4. Handler

先放點圖

5. View

1) View 事件傳遞

Activity調用dispathTouchEvent()方法,把事件傳遞給Window;

Window再將事件交給DecorView(DecorView是View的根佈局);

DecorView再傳遞給ViewGroup;

Activity ——> Window ——> DecorView ——> ViewGroup——> View

ViewRoot只是ViewTree的管理者,和View沒有關係, 真正的根結點是DecorView。

2)事件分發的主要有三個關鍵方法

dispatchTouchEvent() 分發

onInterceptTouchEvent() 攔截 ,只有ViewGroup獨有此方法

onTouchEvent() 處理觸摸事件

二、Android進階

1. app啓動

大神的圖。

開機啓動過程:

app啓動過程:

2. 網絡庫

1) Okhttp和Retrofit

攔截器使用什麼設計模式?

3. 內存優化

  • 第一點: 如果只是想避免OutOfMemory異常的發生,則可以使用軟引用。 如果對於應用的性能更在意,想盡快回收一些佔用內存比較大的對象,則可以使用弱引用。

  • 第二點: 可以根據對象是否經常使用來判斷選擇軟引用還是弱引用。 如果該對象可能會經常使用的,就儘量用軟引用。 如果該對象不被使用的可能性更大些,就可以用弱引用。

4. ANR的原因

5. 如何統計頁面楨率,app流暢?

https://www.jianshu.com/p/d126640eccb1

6. 5.0以前,7.0,8.0的系統,安裝app的速度比較

7. app性能優化

https://www.jianshu.com/p/b3b09fa29f65

8. 內存泄露

  • Handler 引起的內存泄漏
  • 單例模式引起的內存泄漏
  • 非靜態內部類創建靜態實例引起的內存泄漏
  • 非靜態匿名內部類引起的內存泄漏
  • 註冊/反註冊未成對使用引起的內存泄漏
  • 資源對象沒有關閉引起的內存泄漏
  • 集合對象沒有及時清理引起的內存泄漏

三、設計模式

1. 單例

文章已經收錄於我的【Github】項目,另外還整理了一份Android中高級面試複習核心知識點文檔,想做參考的朋友可以去我的【Github】查閱。歡迎Star!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章