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
文章標籤
全站熱搜
