爲面試做準備之深度解析Activity生命週期(01)

本系列是我面試的時候面試官問我的問題,我在這兒寫下來,希望幫助更多的人。


說來慚愧,做了android一年多面試官問我activity生命週期我居然不能詳細的說出來,不能說出來就去了解透徹唄。


面試官是這樣問我的:你有了解過android activity ?我說了解過,然後他問我activity如果突然異常退出會觸發哪一個生命週期,顯然我說錯來,現在來了解下吧。


先把所以的生命週期給打印出來。



運行下,看下會輸出什麼


它先觸發的是onCreate方法,然後再是onStart和onResume,這樣想下,如果我們程序有邏輯錯誤,進入就報錯會觸發什麼週期呢,在onCreate方法裏面出錯應該就會只是執行onCreate這個方法吧,試下

OK,它什麼都沒輸出,說明如果再onCreate裏面出錯就不會再執行其他週期,程序由於異常退出只會執行它所在的生命週期裏面。


onResume過後就是Activity Runing 了,這裏是官方的說明。


繼續測試它當返回過後會觸發什麼週期呢?



它是先輸出onPause然後停了下,輸出onStop和onDestroy.


繼續測試如果其他activty跳轉過來了呢,他會執行什麼方法?


我們這是從MainActivity跳轉(Intent)到Example1_Activity的,它先在MainActivity裏面執行onCreate,onStart,OnResume,這三個週期,一般情況下都是先執行這三個,我們Intent過,所以它會先執行onPause,跳轉過Example1_Activity後在執行同樣的三個方法,當Example1_Activity中OnResume執行完成之後由於Example1_Activity在MainAcitivty 的上面所以MainActivity就會執行onStop方法。


繼續測試如果我們在跳轉過後執行finish();方呢,他會有什麼變化


看見了麼,他會先在MainActivity裏面執行OnCreate方法,我們的跳轉(Intent)是在onCreate裏面執行的,當跳轉過後會先去Example1_Activity裏面執行onCreate,onStart,OnResume,這三個週期,這時候纔算跳轉(Intent)完成,完成後纔會到MainActivity裏面去執行finish();方法,然而執行finish()方法後就會觸發onDestroy週期,而這個週期在官網上面寫的是最後一個,也就是直接沒了(也不知道這樣準不準確)。

如果再回到MainActivity裏面又會執行什麼呢


我們看見Example1_Activity裏面會執行onPause(暫停),我們在Example1_Activity裏面沒有用到finish方法,所以他不會執行onDestroy方法,跳轉到MainActivity裏面過後,由於我們MainActivity的onCreate方法裏也有一個跳轉語句,當MainActivity的Oncreate方法的跳轉語句執行完成之後會到Example1_Activity裏面去執行onCreate,onStart,OnResume,這三個週期,執行完成之後會到Mainactivity裏面去執行onDestroy(銷燬)方法,下面輸出Examp_Activity中的onStop是因爲我們在Example1_Activity裏面執行跳轉的時候會到mainactivity裏面執行mainactivity裏面的,mainactivity執行完了會回到Example1_Activity裏面執行onStop方法



這篇文章就先寫到這兒吧,如有任何不懂歡迎到QQ羣:48761902 一起交流



轉載請註明出處。

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