2017-05-08 98 views
0

所以最近的android dev在這裏轉換。爲onSaveInstanceState()自動保存了什麼?而什麼不是?

我在網上教程中看到人們提到我們需要使用onSaveInstanceState()他們沒有提到的是我們應該使用它的時間。

顯然TextView對象的內部文本(或按鈕的內部文本)不需要保存。

需要保存什麼? EditText內容會自動保存嗎?

我們應該保存哪些類型的數據/我們應該不

回答

1

保存您的活動狀態 當你的活動開始,停止,系統調用的onSaveInstanceState()方法,因此您的活動可以保存狀態信息進行收集的鍵值對。此方法的默認實現可以保存有關活動視圖層次結構狀態的瞬態信息,例如EditText小部件中的文本或ListView小部件的滾動位置。你的應用應該在onPause()方法之後和onStop()之前實現onSaveInstanceState()回調。不要在onPause()中實現此回調。

警告:您必須始終調用onSaveInstanceState()的超類實現,以便默認實現可以保存視圖層次結構的狀態。

要保存活動的其他狀態信息,必須重寫onSaveInstanceState()並將鍵值對添加到在您的活動意外銷燬的事件中保存的Bundle對象。例如:

static final String STATE_SCORE = "playerScore"; 
static final String STATE_LEVEL = "playerLevel"; 
... 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    // Save the user's current game state 
    savedInstanceState.putInt(STATE_SCORE, mCurrentScore); 
    savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel); 


    // Always call the superclass so it can save the view hierarchy state 
    super.onSaveInstanceState(savedInstanceState); 
} 

更多細節,你可以找到here

+0

感謝您詳細的答覆。但是你錯過了我所認爲的「活動狀態」的觀點。更好的問題是 - 什麼是非活動狀態?所以我知道不需要保存這些 – AlanSTACK