我有一個活動在應用上運行,當用戶單擊一個搜索圖標時,另一個活動(Google地圖)打開。 所以我假設第一個活動onPause被調用,並且當Maps活動完成時,第一個活動onResume被調用。當onPause被調用時數據會發生什麼活動
所以我的問題是,在地圖活動被調用之前,用戶輸入的所有數據和第一個活動中分配給變量的數據會發生什麼變化?
我有一個活動在應用上運行,當用戶單擊一個搜索圖標時,另一個活動(Google地圖)打開。 所以我假設第一個活動onPause被調用,並且當Maps活動完成時,第一個活動onResume被調用。當onPause被調用時數據會發生什麼活動
所以我的問題是,在地圖活動被調用之前,用戶輸入的所有數據和第一個活動中分配給變量的數據會發生什麼變化?
Android在啓動其他活動時存儲用於視圖的用戶數據。
onSaveInstanceState
方法將被執行並存儲數據。
調用以被殺死,使得狀態可以在的onCreate(束)或onRestoreInstanceState(束)被恢復之前,從一個活動檢索每個實例狀態(包通過該方法填充將被傳遞到這兩者)。
你可以查看更多信息here。
如果你想保持你的變量,你可以重寫的onSaveInstanceState
static final String STATE_SCORE = "playerScore";
...
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
super.onSaveInstanceState(savedInstanceState);
}
,並給他們回來,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// Restore value of members from saved state
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
}
...
}
在我的Editetxt字段中輸入的所有數據都可以成功保存,但是我無法理解是我有一個全局的字符串表示一個SD卡的路徑來保存圖像,也是位圖本身,這些都沒有保存,他們通過onActivityResult調用分配值 – dancingbush
只有視圖狀態保存,如果你想保存你的變量,您需要手動將它們添加到onSaveInstanceState並將它們重新放回到RESTOREInstancesState –
我們是否只能使用saveInstanceState保存基元和字符串,還是可以保存位圖? – dancingbush
這取決於你的backstack未被清除的情況。請閱讀並且有一些explanation。
不,不是全部。通過用戶輸入的數據將仍然存在,但你必須保存變量
@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); }
,並讓他們回到
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
一點也不,如果活動不被破壞,被輸入的所有數據用戶仍然保存在動物中。 –
謝謝,但我有一個全局字符串表示存儲照片的目錄,當我試圖讓onResume中的值爲空時。 – dancingbush