Activity 完整生命週期
完整的生命週期包含可視的生命週期 可視的生命週期包含前台的生命週期
Activity創建到破壞的全部過程
6.onDestroy
釋放Activity所有資源
不能保證調用的時機
使用者可觀看到離開使用者視線的過程
onStart->onStop
onStop 因onDestroy 不保證調用時機 保存所有Activity使用狀態與邏輯
onResume -> onPause
onRestart 初期創建時不會調用 當從後台調往可視時調用
onSaveInstanceState 儲存Activity的狀態訊息
onRestoreInstanceState 恢復Activity的狀態訊息
啟動過程
onCreate -> onRestart(不一定調用) -> onStart -> onRestoreInstanceState(不一定調用) -> onResume
關閉過程
onPause->onSaveInstanceState(不一定調用)->onStop->onDestroy
當按下(Back)
onPause->onStop->onDestroy
當按下(Back)
onPause->onSaveInstanceState->onStop
當跳出後重新進入
onRestart-> onStart ->onResume
兩個Activity(A)(B)跳轉 A生命週期
(A)onCreate->onStart->onResume->onPause
intent 跳轉
(B)onCreate
(A)onPause->onSaveInstanceState->onStop
兩個Activity(A)(B)跳轉 B跳轉回A生命週期
(A)onCreate->onStart->onResume->onPause
intent A跳轉B
(B)onCreate
(A)onPause->onSaveInstanceState->onStop
(back) B跳轉A
(B)onCreate->onStart->onResume->onPause
(A)onRestart->onStart->onResume
(B)onStop->onDestory
*在onPause中 不建議執行複雜的操作 否則會影響下一個Activity的啟動速度
*對於onSaveInstanceState方法 在頁面關閉時都會執行 但是在非系統原因的關閉 不會執行默認的恢復數據操作 即onRestoreInstanceState
onCreate->onStart->onResume->onPause->onSaveInstanceState->onStop->onDestroy->onCreate->onStart->onRestoreInstanceState->onResume
直向轉橫向 系統會關閉Activity 啟用新的Activity 並使用橫向的library
*onRestoreInstanceState需要在onResume前執行 確保數據的正確恢復並顯示無誤 onSaveInstanceState需要在onPause後執行 確保使用者不再進行額外的輸入 儲存正確的訊息