關於Activity的生命週期網上也有很多文章,最經典的莫過於官方的一張圖解了。
這張圖列出了Activity生命週期最主要的一些方法,啟動後依次執行:
onCreate –> onStart –> onResume –> onPause –> onStop –> onDestroy
相信很多人也都已經知道以上方法與執行順序,但是Activity還有其他方法,如onContentChanged, onPostCreate, onPostResume, onConfigurationChanged, onSaveInstanceState, onRestoreInstanceState,下麵我做了一個Demo來徹底研究下這些生命週期的方法:
程式啟動執行並結束上述生命週期的方法執行順序是這樣的:
onCreate –> onContentChanged –> onStart –> onPostCreate –> onResume –> onPostResume –> onPause –> onStop –> onDestroy
-
onContentChanged
onContentChanged()是Activity中的一個回呼方法
當Activity的佈局改動時,即setContentView()或者addContentView()方法執行完畢時就會呼叫該方法, 例如,Activity中各種View的findViewById()方法都可以放到該方法中。
-
onPostCreate、onPostResume
onPostCreate方法是指onCreate方法徹底執行完畢的回呼,onPostResume類似,這兩個方法官方說法是一般不會重寫,現在知道的做法也就只有在使用ActionBarDrawerToggle的使用在onPostCreate需要在螢幕旋轉時候等同步下狀態,Google官方提供的一些實體就是如下做法:
-
onPause、 onStop
這裡順便再提一下onPause、 onStop的區別, onPause是在整個視窗被半遮蓋或者半透明的時候會執行,而onStop則是在整個視窗被完全遮蓋才會觸發, 觸發onStop的方法之前必定會觸發onPause方法。
-
onCreate、 onStart
onCreate方法會在第一次建立的時候執行,緊接著便會執行onStart方法,之後頁面被完全遮擋會執行onStop方法,再傳回的時候一般便會執行onRestart –> onStart方法, 但是如果如果這時候App記憶體不夠需要更多的記憶體的時候,App便會殺死該行程,結束掉該Activity,所以這時候再傳回的時候便會重新執行onCreate –> onStart –> onResume方法。
-
onSaveInstanceState、 onRestoreInstanceState
這是一個比較深入的話題,後面會單獨來講,敬請期待!
點選”閱讀原文“即可檢視原文部落格,大家如果覺得對你有幫助的話,不妨推薦身邊的朋友關註此賬號,如果有什麼建議或者推薦的可直接留言給我。