Activity完整的生命週期是從onCreate
到onDestory
;
顯示的生命週期從onStart
到OnStop
;廣播的註冊和反註冊可以放在到這裡
前臺週期是onResume
到onPause
;當裝置休眠,或者接受intent,都會進入這個週期,所以這兩個函式中程式碼需要非常的輕量級。
生命週期如下:
onpause
之後Activity都可能被殺掉,所以最好把資料的持久化儲存放到onpause裡面處理。
onSaveInstanceState
當一個activity被殺之前會呼叫onSaveInstanceState,這個時候可以儲存activity的當前資訊到指定的Bundle中,當再次回到這個activity的時候,可以在onCreate 或者 onRestoreInstanceState中恢復狀態。 Android P版本以後 onSaveInstanceState 在onStop之後呼叫,之前的版本 在onStop之前呼叫,並且不確定是onPause之前還是之後。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 從savedInstanceState中恢復資料, 如果沒有資料需要恢復savedInstanceState為null
if (savedInstanceState != null) {
temp = savedInstanceState.getString("temp");
System.out.println("onCreate: temp = " + temp);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("temp", temp);
}
複製程式碼