天天看點

saveInstallState參數使用詳解(android activity狀态儲存和恢複)

寫過Android程式的都知道Activity中有一個名稱叫onCreate的方法。該方法是在Activity建立時被系統調用,是一個Activity生命周期的開始。可是有一點容易被忽視,就是onCreate方法的參數saveInstallState。因為在一般的程式開發中,很少用到這個參數。

onCreate方法的完整定義如下:

<code>public void onCreate(Bundle saveInstallState){ super.onCreate(saveInstallState); }</code>

    從上面的代碼可以看出,onCreate方法的參數是一個Bundle類型的參數。Bundle類型的資料與Map類型的資料相似,都是以key-value的形式存儲資料的。

    從字面上看saveInstallState,是儲存執行個體狀态的。實際上,saveInstallState也就是儲存Activity的狀态的。那麼,saveInstallState中的狀态資料是從何處而來的呢?下面我們介紹Activity的另一個方法onSaveInstallState。

    onSaveInstallState方法是用來儲存Activity的狀态的。當一個Activity在生命周期結束前,會調用該方法儲存狀态。這個方法有一個參數名稱與onCreate方法參數名稱相同。如下所示:

<code>public void onSaveInstallState(Bundle saveInstallState){ super.onSaveInstallState(saveInstallState); }</code>

    在實際應用中,當一個Activity結束前,如果需要儲存狀态,就在onSaveInstallState中,将狀态資料以key-value的形式放入到saveInstallState中。這樣,當一個Activity被建立時,就能從onCreate的參數saveInstallState中獲得狀态資料。

    狀态這個參數在實作應用中有很大的用途,比如:一個遊戲在退出前,儲存一下目前遊戲運作的狀态,當下次開啟時能接着上次的繼續玩下去。再比如:電子書程式,當一本小說被閱讀到第199頁後退出了(不管是記憶體不足還是使用者自動關閉程式),當下次打開時,讀者可能已忘記了上次已閱讀到第幾頁了,但是,讀者想接着上次的讀下去。如果采用saveInstallState參數,就很容易解決上述問題。