Activity原理

找了好多書,看了好多的播客,並沒有找到一個很系統講Activity原理的。雖然哦我也吸收了很多關於Activity的知識。但沒有一個知識的構架,還是很虛


在這裏,只好自己再總結一次:


我覺得Activity的生命週期:onCreate(Bundle onSavedInstanceState)——>onStart()——>onResume()——>onPause()——.>onStop()——>onDestory()

這六個生命週期,其實兩兩對應。其實很多時候,我們疑惑的是,在正常開發中,什麼時候調用以上六大生命階段的哪個階段。

我總結了下:按配對來說,

create和destroy這一對,是不可視化、不可交互的。所以,很多不重複使用的資源,都在destroy進行銷燬,當然,我們很多時候把基本的UI初始化都放在了create中。對於這個不重複使用的資源的理解是,如果這個資源不大,在頁面的焦點失去後,或者被擋住後,不需要釋放以騰出更多的資源去滿足其他Activity,就可以放在create中初始化,在destroy中銷燬

start和stop這一對,是可視化、不可交互的。但start這個過程是瞬間的,當然,上面的一對階段,也是瞬間的,畢竟初始化和銷燬並不要多少時間。但是,start階段是可視化的開始,stop是可視化的結束。每次對應Activity的現場恢復都是衝start開始。所以,對於start,要初始化那些在屏幕被完全替換掉了的時候需要釋放的資源和操作,可能你在看視頻,電話來了,這時候,我們的網絡連接資源,還有語音資源,都要讓給電話系統了;並且整個屏幕是被切換掉了,所以最後一個步驟必然是stop。


resume和pause這一對,是可視化、可交互的,當然可交互是指resume,所以Activity的生命中,resume是最長的——所有用戶的交互,都可以在這個階段被接收的。所以這個階段,應該初始化的是那些在失去焦點後,雖然屏幕並沒有被切換掉的,但是卻很影響性能的資源和操作。百度地圖在加載座標和位置信息的過程中,如果你點擊一個AlertDialog,這時地圖的焦點失去了,所以,它停止加載,當它重新獲取焦點的時候,就繼續獲取。也就是在resume中初始化上述情況的資源,在pause中,暫停這是資源的提供


總結中.......

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