Activity的生命周期詳解

Activity有4種狀態:

  • 運行狀態,活動處于返回棧(Back Stack)棧頂
  • 暫停狀態,活動不再處于棧頂,但仍然可見
  • 停止狀態,活動不再處于棧頂,并完全不可見
  • 銷毀狀態,從返回棧中移除時
//活動的初始化,如加載布局,綁定事件
@Override
protected void onCreate(Bundle savedInstanceState) { 
   super.onCreate(savedInstanceState);}

//活動由不可見變為可見時調用
@Override
protected void onStart() { 
   super.onStart();}

//活動準備好和用戶交互的時候調用,并處于運行狀態
@Override
protected void onResume() {   
 super.onResume();}

//準備啟動或者恢復另一個活動
@Override
protected void onPause() {  
  super.onPause();}

//活動完全不可見時調用
@Override
protected void onStop() { 
   super.onStop();}

//活動銷毀前調用,之后活動的狀態變為銷毀狀態
@Override
protected void onDestroy() {  
  super.onDestroy();}

//活動由停止狀態變為運行狀態前調用
@Override
protected void onRestart() {  
  super.onRestart();}

具體可見下表

方法 描述 之后可否被殺死? 下一個方法
onCreate() activity第一次被創建時調用。在這里你應該完成所有常見的靜態設置工作——創建view、綁定list數據等等。 本方法傳入一個包含了該activity前一個狀態的Bundle對象(如果之前已捕獲了狀態的話,詳見后面的保存Activity狀態)。下一個回調方法總是onStart()。 onStart()
onRestart() activity被停止后、又再次被啟動之前調用。下一個回調方法總是onStart() onStart()
onStart() activity要顯示給用戶之前調用。如果activity進入前臺,則下一個回調方法onResume();如果進入隱藏狀態,則下一個回調方法是onStop()。 onResume() 或 onStop()
onResume() activity開始與用戶交互之前調用。這時activity是在activity棧的頂端,用戶可以向其中輸入。下一個回調方法總是onPause()。 onPause()
onPause() 當系統準備啟動另一個正在恢復的activity時調用。這個方法通常用于把未保存的改動提交為永久數據、停止動畫播放、以及其它可能消耗CPU的工作等等。 它應該非常迅速地完成工作,因為下一個activity在本方法返回前是不會被恢復運行的。如果activity返回前臺,則下一個回調方法是onResume();如果進入用戶不可見狀態,則下一個是onStop() 可以 onResume() 或 onStop()
onStop() 當activity不再對用戶可見時調用。原因可能是它即將被銷毀、或者其它activity(已有或新建的)被恢復運行并要覆蓋本activity。如果activity還會回來與用戶交互,則下一個回調方法是onRestart();如果這個activity即將消失,則下一個回調方法是onDestroy() 可以 onRestart() 或 onDestroy()
onDestroy() 在本activity被銷毀前調用。這是activity收到的最后一個調用。 可能是因為activity完成了工作(有些人在這里調用finish()), 也可能是因為系統為了騰出空間而臨時銷毀activity的本實例。 可以利用isFinishing() 方法來區分這兩種情況。 可以
完整生存期 可見生存期 前臺生存期
onCreate()~onDestroy() onStart()~onStop() onResume()~onPause
Paste_Image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容