分以下幾種情況討論activity生命周期回調(diào)函數(shù)的調(diào)用順序:
正常打開(kāi)app,然后按Back鍵退出
從Home鍵最近打開(kāi)app菜單進(jìn)入
正常打開(kāi)app陶贼,然后按Home鍵返回桌面焦读,再次進(jìn)入app
從activity A跳轉(zhuǎn)到activity B仓蛆,然后按Back鍵返回activity A
從activity A打開(kāi)activity B(Theme.Dialog等),然后按Back鍵關(guān)閉activity B
從activity A打開(kāi)Dialog蝌诡,然后關(guān)閉Dialog
從activity A打開(kāi)AlertDialog溉贿,然后關(guān)閉AlertDialog
來(lái)電activity覆蓋
從桌面widget啟動(dòng)activity
1.桌面圖標(biāo)啟動(dòng)App,按Back鍵返回:
onCreate()
onStart()
onResume()
【Back鍵按下】
onPause()
onStop()
onDestroy()
2.長(zhǎng)按Home按鍵浦旱,從最近程序中點(diǎn)擊圖標(biāo)進(jìn)入
與情況1相同宇色。
3.啟動(dòng)App,按Home按鍵颁湖,然后再點(diǎn)擊圖標(biāo)進(jìn)入
onCreate()
onStart()
onResume()
【Home鍵按下】
onPause()
onStop()
【再次進(jìn)入Ap】
onRestart()
onStart()
onResume()
4.新Activity全部覆蓋,back退出新Activity
A oncreate()
A onstart()
A onResume()
【啟動(dòng)B】
A onPause()
B onCreate()
B onStart()
B onResume()
A onStop()
【從B Back】
B onPause()
A onActivityResult()
A onRestart()
A onStart()
A onResume()
B onStop()
B onDestroy()
【從A Back】
A onPause()
A onStop()
A onDestroy()
5.新Activity部分覆蓋宣蠕,back退出新Activity
A onCreate()
A onStart()
A onResume()
【啟動(dòng)B】
A onPause()
B onCreate()
B onStart()
B onResume()
【從B Back】
B onPause()
A onActivityResult()
A onResume()
B onStop()
B onDestroy()
6.普通Dialog部分覆蓋
同下面AlertDialog
7.AlertDialog部分覆蓋
onCreate()
onStart()
onResume()
【顯示AlertDialog】
【關(guān)閉AlertDilaog】
在AlertDialog出現(xiàn)以及消失的過(guò)程中,沒(méi)有觸發(fā)任何onXXX事件甥捺。
8.來(lái)電覆蓋
等同新Activity全覆蓋
9.桌面控件intent啟動(dòng)
9.1.目標(biāo)Activity未啟動(dòng)
等同桌面圖標(biāo)直接啟動(dòng)抢蚀,會(huì)直接啟動(dòng)一個(gè)新Activity。
9.2.目標(biāo)Activity已經(jīng)啟動(dòng)并且在最上層
如果目標(biāo)Activity是由桌面控件觸發(fā)的镰禾,那么等同情況3皿曲,不會(huì)創(chuàng)建新Activity。
如果目標(biāo)Activity是由Launcher圖標(biāo)啟動(dòng)的吴侦,那么會(huì)不停的創(chuàng)建新Activity屋休。
9.3.目標(biāo)Activity已經(jīng)啟動(dòng)但是不在最上層
如果目標(biāo)Activity是由桌面控件啟動(dòng)的,那么不會(huì)創(chuàng)建新Activity备韧,但也不會(huì)把目標(biāo)Activity提到最上層劫樟。
如果目標(biāo)Activity是由Launcher圖標(biāo)啟動(dòng)的,那么會(huì)不停的創(chuàng)建新Activity。