在Activity中保存用戶的當前操作狀態,如輸入框中的文本,一般情況下載按了home鍵后,重新進入文本框中的東西會丟下,所以我們要保存當前頁面信息,如在寫短信的時候接到一個電話,那么當你接電話的時候短信界面就會別隱藏,那么我們希望接完電話后可以繼續編輯短信,就需要保存狀態。使用辦法:
重寫Activity中的onSaveInstanceState(Bundle outState)和onRestoreInstanceState(Bundle savedInstanceState)方法,步驟為:(1)在離開頁面的時候用onSaveInstanceState中的outState可以保存你所需要的值,(2)在重新回到該頁面的時候可以使用onRestoreInstanceState從saveInstanceState中獲取保存過得值來重新初始化界面。
從android的API文檔可以知道,onSaveInstanceState是在OnStop之前執行,onRestoreInstanceState在OnStart后執行,因此如果是Activity銷毀過后的話再啟動數據就沒有保存了,即在finish或用戶按下Back后,該功能就失效了。一般用在當前Activity被其他Activity覆蓋和按Home鍵后重新進入該Activity的時候。
實例代碼如下:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// save the current data, for instance when changing screen orientation
outState.putSerializable("dataset", mDataset);
outState.putSerializable("renderer", mRenderer);
}
@Override
protected void onRestoreInstanceState(Bundle savedState) {
super.onRestoreInstanceState(savedState);
// restore the current data, for instance when changing the screen
// orientation
mDataset = (XYMultipleSeriesDataset) savedState.getSerializable("dataset");
mRenderer = (XYMultipleSeriesRenderer) savedState.getSerializable("renderer");
}