今天要來說說 Activity 的生命週期
首先先放上官方的圖,相信學習過 Android 的人一定對他不陌生,流程展示了 Activity 各個生命週期之間的關係
onCreate() 在系統首次建立 Activity 的時候觸發,onCreate 在整個生命週期只會觸發一次,通常都在進行一些初始化的工作,這個時候畫面還沒來到前台,所以使用者還看不到畫面,當 onCreate 的方法執行完後,Activity 會進入 Started 的狀態,系統之後會執行 onStart()。
當 Activity 進入 Started 狀態時,系統會調用 onStart(),初始化UI元件,可以讓 Activity 被使用者所看見,但使用者還不能進行互動,這個方法會非常快的完成,完成之後就會接著執行 onResume()。
在 onResume() 時就是能跟使用者互動的狀態,應用程式會一直保持這種狀態直到一些事件發生,例如:按了 Home 鍵、有電話打來、關閉手機螢幕等,如果中斷事件產產生時。
onPause() 表示暫停,再這個階段 Activity 還是可以被看到的,但無法進行互動,就像是如果有設定鬧鐘,時間到了跳出 Dialog 來擋住應用程式時,而當 Activity 要跳到另一個 Activity 或應用程式正常退出時也都會執行這個方法。
onStop() 這個時候表示停止,Activity 已經不能被使用者看見,可以釋放還沒釋放的資源,在onPause() 和 onStop() 階段,萬一記憶體不夠的話可能應用程式可能會直接被摧毀,下次要回來的話只能重新從 onCreate() 開始。
在銷毀 Activity 之前會先執行 onDestroy(),通常會在幾個狀況執行這個方法,像是使用者要徹底關閉這個 Activity 或 調用了 finish() 這個方法,以及配置改變時,如常會被問到的旋轉手機時,系統會暫時銷毀 Activity,這時就會調用 onDestroy()。
這個階段是如果 Activity 從不可見的 onStop() 要轉到可見的 onStart() 時,會先經過 onRestart(),例如按了 Home 鍵再切回應用程式或者使用應用程式途中接起電話掛掉電話後就會觸發這個方法,接著回到 onStart()。