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