描述:4個Activity頁面 配合launcheMode: singleTask、 singleInstance,查看對應生命週期調用
AActivity,CActivity,DActivity luanchMode 都是standard,指修改BActivity。
結論:
當B頁面luanchMode爲singleTask,棧中已經有B頁面時,再啓動B頁面會銷燬B頁面之上的所有頁面
當B頁面luanchMode爲singleInstance,棧中已經有B頁面時,再啓動B頁面不會銷燬B頁面之上的所有頁面
----------------------------------------------------
下面是通過打印生命週期日誌的方式,方便理解對應生命週期調用。
BActivity launchMode:singleTask
依次打開頁面:AActivity->BActivity->CActivity->DActivity
對應生命週期:
依次啓動A->B->C->D
2019-04-22 11:37:01.705 AActivity-onCreate
2019-04-22 11:37:01.752 AActivity-onStart
2019-04-22 11:37:01.758 AActivity-onResume
2019-04-22 11:37:02.787 AActivity-onPause
2019-04-22 11:37:02.822 BActivity-onCreate
2019-04-22 11:37:02.867 BActivity-onStart
2019-04-22 11:37:02.871 BActivity-onResume
2019-04-22 11:37:03.417 AActivity-onSaveInstanceState
2019-04-22 11:37:03.418 AActivity-onStop
2019-04-22 11:37:03.917 BActivity-onPause
2019-04-22 11:37:03.944 CActivity-onCreate
2019-04-22 11:37:03.983 CActivity-onStart
2019-04-22 11:37:03.986 CActivity-onResume
2019-04-22 11:37:04.568 BActivity-onSaveInstanceState
2019-04-22 11:37:04.569 BActivity-onStop
2019-04-22 11:37:04.873 CActivity-onPause
2019-04-22 11:37:04.907 DActivity-onCreate
2019-04-22 11:37:04.948 DActivity-onStart
2019-04-22 11:37:04.951 DActivity-onResume
2019-04-22 11:37:05.476 CActivity-onSaveInstanceState
2019-04-22 11:37:05.477 CActivity-onStop
通過D頁面啓動B頁面
D->B
2019-04-22 11:37:32.767 CActivity-onDestroy
2019-04-22 11:37:32.783 DActivity-onPause
2019-04-22 11:37:32.806 BActivity-OnNewIntent
2019-04-22 11:37:32.808 BActivity-onRestart
2019-04-22 11:37:32.809 BActivity-onStart
2019-04-22 11:37:32.810 BActivity-onResume
2019-04-22 11:37:33.314 DActivity-onStop
2019-04-22 11:37:33.314 DActivity-onDestroy
注意是C頁面先進行Destroy,然後纔是D頁面
B頁面點擊back鍵依次關閉:
目前棧上只有AB 兩個頁面,CD已經銷燬。
B->A
B頁面點擊Back鍵,先是頁面是A頁面
2019-04-22 11:38:02.802 BActivity-onPause
2019-04-22 11:38:02.832 AActivity-onRestart
2019-04-22 11:38:02.833 AActivity-onStart
2019-04-22 11:38:02.835 AActivity-onResume
2019-04-22 11:38:03.381 BActivity-onStop
2019-04-22 11:38:03.382 BActivity-onDestroy
A頁面點擊back鍵
2019-04-22 11:38:04.935 AActivity-onPause
2019-04-22 11:38:05.486 AActivity-onStop
2019-04-22 11:38:05.486 AActivity-onDestroy
BActivity launchMode:singleInstance
依次打開頁面:AActivity->BActivity->CActivity->DActivity
對應生命週期:
啓動A頁面
2019-04-22 11:24:30.652 AActivity-onCreate
2019-04-22 11:24:30.702 AActivity-onStart
2019-04-22 11:24:30.706 AActivity-onResume
通過A啓動B頁面
2019-04-22 11:24:33.348 AActivity-onPause
2019-04-22 11:24:33.420 BActivity-onCreate
2019-04-22 11:24:33.469 BActivity-onStart
2019-04-22 11:24:33.475 BActivity-onResume
2019-04-22 11:24:33.944 AActivity-onSaveInstanceState
2019-04-22 11:24:33.945 AActivity-onStop
通過B啓動C頁面
2019-04-22 11:24:34.608 BActivity-onPause
2019-04-22 11:24:34.638 CActivity-onCreate
2019-04-22 11:24:34.681 CActivity-onStart
2019-04-22 11:24:34.685 CActivity-onResume
2019-04-22 11:24:35.374 BActivity-onSaveInstanceState
2019-04-22 11:24:35.375 BActivity-onStop
通過C啓動D頁面
2019-04-22 11:24:35.700 CActivity-onPause
2019-04-22 11:24:35.734 DActivity-onCreate
2019-04-22 11:24:35.768 DActivity-onStart
2019-04-22 11:24:35.771 DActivity-onResume
2019-04-22 11:24:36.297 CActivity-onSaveInstanceState
2019-04-22 11:24:36.297 CActivity-onStop
通過D頁面打開B頁面
D->B
通過D打開B頁面,調用B頁面的OnNewIntent方法,並沒有重新create一個B頁面
2019-04-22 11:28:30.137 DActivity-onPause
2019-04-22 11:28:30.157 BActivity-OnNewIntent
2019-04-22 11:28:30.160 BActivity-onRestart
2019-04-22 11:28:30.161 BActivity-onStart
2019-04-22 11:28:30.162 BActivity-onResume
2019-04-22 11:28:30.780 DActivity-onSaveInstanceState
2019-04-22 11:28:30.781 DActivity-onStop
通過打印日誌查看 當BActivity launcheMode爲singleInstance時,後面打開的C,D頁面並沒有被銷燬。
點擊Back鍵依次關閉頁面
B->D->C->A
點擊Back鍵,依次關閉頁面
關閉B頁面
2019-04-22 11:29:14.765 BActivity-onPause
2019-04-22 11:29:14.793 DActivity-onRestart
2019-04-22 11:29:14.794 DActivity-onStart
2019-04-22 11:29:14.796 DActivity-onResume
2019-04-22 11:29:15.461 BActivity-onStop
2019-04-22 11:29:15.462 BActivity-onDestroy
關閉D頁面
2019-04-22 11:29:16.785 DActivity-onPause
2019-04-22 11:29:16.816 CActivity-onRestart
2019-04-22 11:29:16.817 CActivity-onStart
2019-04-22 11:29:16.819 CActivity-onResume
2019-04-22 11:29:17.353 DActivity-onStop
2019-04-22 11:29:17.354 DActivity-onDestroy
關閉C頁面
2019-04-22 11:29:19.337 CActivity-onPause
2019-04-22 11:29:19.364 AActivity-onRestart
2019-04-22 11:29:19.366 AActivity-onStart
2019-04-22 11:29:19.367 AActivity-onResume
2019-04-22 11:29:19.882 CActivity-onStop
2019-04-22 11:29:19.883 CActivity-onDestroy
關閉A頁面
2019-04-22 11:29:23.387 AActivity-onPause
2019-04-22 11:29:23.961 AActivity-onStop
2019-04-22 11:29:23.961 AActivity-onDestroy