Android Activity(活動)生命週期會按照如下順序回檔,onCreate → onStart → onResume → onPause → onStop → onDestroy。稱之為 Entire Lifetime 整個生命週期。
Android Activity 生命週期(Lifecycle) |
Android Activity 的生命週期主要有七個方法,分別是:
- onCreate():分配資源給這個 Activity,用來做初始化的動作,物件的宣告與設置都是在此撰寫。
- onStart():將 Activity 內容顯示到螢幕上。即獲得焦點時,會調用,Activity 處於棧頂。
- onResume():取得螢幕的控制權,在這個階段,用戶才能與 Activity 交互時調用。同時,若開發者想要取得物件的長度、寬度等等屬性,也可以在此取得,尤其適用於啟動音訊、視頻和動畫。
- onPause():凍結原本的 Activity,再交出直接存取螢幕能力。
- onStop():Activity 的運作完全停止,失去焦點時調用。
- onDestroy():銷毀 Activity,釋放出資源。這是 Activity 能收到的最後一個調用。調用的原因可能是別人在這個 activity 上調用了 finish(),也可能是系統為了更多的記憶體空間而把它所在的進程處死了。在這個方法中,可以調用 isFinishing() 來判斷自己屬於哪一種死法。
- onRestart():將凍結和銷毀的 Activity,資源重新啟動 Activity 時調用。
// Activity剛被創建時 public static final int ON_CREATE = 1; // 執行完轉到前台的最後準備工作 public static final int ON_START = 2; // 執行完即將與用戶交互的最後準備工作 // 此時該activity位於前台 public static final int ON_RESUME = 3; // 用戶離開,activity進入後台 public static final int ON_PAUSE = 4; // activity不可見 public static final int ON_STOP = 5; // 執行完被銷毀前最後的準備工作 public static final int ON_DESTROY = 6; // 重新啟動執行工作 public static final int ON_Restart= 7; |
Android Activity 範例:
public class Activity extends AppCompatActivity {
private static final String TAG = "Activity";
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); Toast.makeText(this, "onCreate Activity", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onCreate Activity"); }
@Override protected void onStart() { super.onStart(); Toast.makeText(this, "onStart Activity", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onStart Activity"); }
@Override protected void onResume() { super.onResume(); Toast.makeText(this, "onResume Activity", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onResume Activity"); }
@Override protected void onPause() { super.onPause(); Toast.makeText(this, "onPause Activity", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onPause Activity"); }
@Override protected void onStop() { super.onStop(); Toast.makeText(this, "onStop Activity", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onStop Activity"); }
@Override protected void onDestroy() { super.onDestroy(); Toast.makeText(this, "onDestroy Activity", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onDestroy Activity"); }
@Override protected void onRestart() { super.onRestart(); Toast.makeText(this, "onRestart Activity", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onRestart Activity"); } } |
沒有留言:
張貼留言