今天來說說Android Activity 的生命週期
這是滿重要的一環
很多app沒有注意到 lifecycle
導至使用者的不便
甚至是資料的遺失
那麼就讓我們來看看吧
一個Activity基本上有四個狀態 Active、Paused、Stopped、Dead:
Active (活動)
Activity 在運行中的狀態
在 Android 平台上,一個時刻只會有一個 Activity 處於Active 或 Running 狀態。
Paused (暫停)
Paused狀態是當 Activity 暫時暗下來
使用者無法與原來的 Activity 互動,退到背景畫面時的狀態
例如:當電話來時或是新出現的介面元件蓋住了原來的 Activity 畫面時
Stopped (停止)
Stopped狀態表示這個 Activity 已經離開螢幕
透過長按Home鍵,可以叫出所有處於Stopped狀態的Application List(應用程式列表)
Dead (死亡)
Dead狀態是 Activity 被終止或被系統回收的狀態
要終止 Activity,可以在程式中呼叫 finish()
而系統回收是在記憶體不足時
系統會優先將處於Stopped狀態的 Activity結束
來釋放所佔用的記憶體
點我看官網介紹
這張圖包含了Activity出生到死亡的所有動作
一開始啟動時的呼叫順序為
onCreate -> onStart -> onResume
如果中途呼叫了另一個Activity時
onPause(1) -> onCreate(2) -> onStart(2) - onResume(2) -> onStop(1)
先暫停第一個,等第二個完成啟動時才stop
那把剛剛的Activity再叫回來呢?
onPause(2) -> onRestart(1) -> onStart(1) -> onResume(1) -> onStop(2) -> onDestroy(2)
上面就是我們按Back鍵所發生的情況
最後Activity結束的流程是
onPause -> onStop -> onDestroy
在Destroy後要再啟動Activity就必需從Create開始整套的流程喔!!
總結幾個Callback Method的使用時機:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//用來做程式的初使化動作
}
@Override
protected void onStart() {
super.onStart();
//當Activity變得可見時調用該函數
}
@Override
protected void onResume() {
super.onResume();
//把保存的資料拿回來使用
}
@Override
protected void onPause() {
super.onPause();
//時把需要保存的資料保存
}
@Override
protected void onStop() {
super.onStop();
//Activity變得不可見時調用該方法
}
@Override
protected void onDestroy() {
super.onDestroy();
//通常都拿來把onCreate()時的資料做釋放的動作
}
@Override
protected void onRestart() {
super.onRestart();
//再次啟動之前將會調用該方法
}
我們了解Activity的生命週期後
就可以在適當的時機點來做我們想做的事
包括動畫、介面…等
那就讓我們來試試看吧
參考資料:
https://developer.android.com/reference/android/app/Activity.html
http://tyroandroid.blogspot.tw/2009/07/android-activity.html
http://peimei0808.pixnet.net/blog/post/303469485-%5Bandroid%5D-activity%E7%94%9F%E5%91%BD%E9%80%B1%E6%9C%9F%E4%B9%8B%E4%BB%8B%E7%B4%B9(%E4%BA%8C)
留言列表