Activity四種啓動模式分別是standard,singleTop,singleTask,singltInstance.在執行各個模式時候的頁面中執行的方法各不相同,我們常常只是口頭敘述一下各種模式是怎麼回事,但是真的被問到執行的方法,可能說的不是很清楚,這裏通過打印log
的方法記錄一下。
standard模式
從MainActivity進入StandardActivity,執行的方法分別是:onCreate,onStart,onResume,onAttchedToWindow.
從StandardActivity進入StandardTestActivity後執行方法:onPause,onStop.可以看到,當StandardTestActivity執行完onResume後,StandardActivity的onStop方法才執行。
返回的時候可以看到從StandardTestActivity到StandardActivity,StandardActivity執行了onStart,onResume方法,而當StandardActivity的onResume方法執行後,StandardTestActivity執行了onStop,onDestroy,onDetachedFromWindow方法
再次點擊返回從StandardActivity返回到MainActivity頁面,StandardActivity也依次執行了onPause,onStop,onDestroy,onDetachedFromWindow方法
singleTop模式
如圖所示,這裏分兩種情況來看SingleTopActivity方法的執行。
- singleTop—>singleTop
- singleTop—>standard—>singleTop
singleTop–>singleTop
可以從圖中看到singleTop->singleTop
不再執行依次onCreate,onStart,onResume,而是執行了onNewIntent,onResume.
singleTop–>standard–>singleTop
可以從圖中看到singleTop-->standard-->singleTop
中,第二個singleTop依次執行了onCreate,onStart,onResume方法
singleTask模式
如圖所示,同樣分兩種情況來看SingleTaskActivity方法的執行。
- singleTask—>singleTask
- singleTask—>standard—>singleTask
singleTask–>singleTask
可以從圖中看到,singleTask->singleTask
和singleTop->singleTop
類似,也是執行了onNewIntent,onResume方法
singleTask–>standard–>singleTask
可以從圖中看到singleTask-->standard-->singleTask
,進入第二個singleTask的時候,StandardActivity執行的方法相當於finish的操作,也就是被移除了,singleTask則執行了onNewIntent,onStart,onResume方法。
返回的時候直接執行了singleTask的onPause,onStop,onDestroy,onDetachedFromWindow方法
singleInstance模式
如圖所示,同樣分兩種情況來看SingleInstanceActivity方法的執行。
- singleInstance–>singleInstance
- singleInstance–>standard–>singleInstance
singleInstance–>singleInstance
可以從圖中看到,singleInstance->singleInstance
同樣是執行了onNewIntent,onResume,前一個執行了onPause方法
singleInstance–>standard–>singleInstance
可以從圖中看到,前面的一切正常,進入第二個SingleInstanceActivity的時候,執行了onNewIntent,onStart,onResume方法,這個和singleTask是一樣的,但是不同的是SingleInstanceActivity和StandardActivity不在同一個任務棧中。
從下圖可以看到,SingleInstanceActivity點擊返回到了StandardActivity中,再點擊返回,則不再會回到SingleInstanceActivity。