Android的程式在onCreate時會載入一個Bundle參數,利用這個參數就可以"暫存"使用者的UI資訊。Android程式提供了一個方法讓我們儲存狀態:onSaveInstanceState(),在Eclipse選單 Source > Override/Implement Methods 中可以開啟這個方法。當你有任何需要暫存的資料時,直接在onSaveInstanceState()儲存即可。

20
21
22
23
24
25
26
27
28
29
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		// TODO Auto-generated method stub
		super.onSaveInstanceState(outState);
 
		//儲存UI狀態到bundle中
		outState.putString("str", "value");
		outState.putInt("int", 1);
		outState.putBoolean("boolean", true);
	}

onSaveInstanceState()會在activity被銷毀之前執行,但是由於這個方法不屬於生命週期之一,所以官方網站有特別提到它不一定會被執行,只適合用來暫存UI畫面的資料。如果需要儲存重要的資料,最好是在onPause()進行儲存。

在onSaveInstanceState()儲存的bundle資料,會在onCreate()或是onRestoreInstanceState()時載入,所以讀取資料的動作可以寫在這二個方法當中。onRestoreInstanceState()會在onStart()之後執行,當我們在onCreate()需要處理比較多的事情時,可以將回復UI的動作交給onRestoreInstanceState()處理。無論要在那裡讀取,只要直接取得Bundle savedInstanceState內的資料即可:

14
15
16
		if (savedInstanceState != null) {	//讀取bundle儲存的狀態
			String inputString = savedInstanceState.getString("str");
		}






 

 

REF:http://www.moke.tw/wordpress/computer/advanced/255

文章標籤
全站熱搜
創作者介紹
創作者 Eason 的頭像
Eason

jason71248的部落格

Eason 發表在 痞客邦 留言(0) 人氣(41)