Activity onSaveInstanceState(Bundle)

❀卜卜ღ?Bruce發表於2019-03-12

Activity完整的生命週期是從onCreateonDestory; 顯示的生命週期從onStartOnStop;廣播的註冊和反註冊可以放在到這裡 前臺週期是onResumeonPause;當裝置休眠,或者接受intent,都會進入這個週期,所以這兩個函式中程式碼需要非常的輕量級。 生命週期如下:

activity_lifecycle.png

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);  
    }  
複製程式碼

相關文章