天天看點

Activity生命周期方法調用finish後的不同表現

今天宿舍一個哥們出去面試遇到了這個面試題:"在activity oncreate()調用finish()"生命周期是怎麼樣的?

我趕緊寫了些demo,發現确實很有趣:

接下來看在生命周期不同回調裡面finish()調用後的日志:

1,oncreate():經曆onStart(),onResume(),onPause(),onStop()方法

Activity生命周期方法調用finish後的不同表現

2,onstart()經曆onResume(),onPause()方法

Activity生命周期方法調用finish後的不同表現

3,onresume() 經曆onStart(),onResume(),onPause(),onStop()方法

Activity生命周期方法調用finish後的不同表現

4,onpause()

Activity生命周期方法調用finish後的不同表現

5,onstop()結果同上

6,onDestory()結果同上

 那麼問什麼是這個樣子的呢?(2016年4月24日00:01:37更新)

如下是github上面對于這個問題的探讨:

https://github.com/android-cn/android-discuss/issues/430  

執行完 onCreate()後,判斷這時 activity 有沒有finish ,沒有就會接着執行 onStart(),否則會調用 destory()

執行完 onStart()後會執行 handleResumeActivity 函數,其中performResumeActivity 函數中:

會調用 onResume 如果此時finish,就不會執行finish(),會調用ActivityManagerNative.getDefault()

.finishActivity(token, Activity.RESULT_CANCELED, null);執行銷毀

繼續閱讀