天天看點

儲存activity狀态(Saving activity state)

[color=red][b]儲存activity狀态(Saving activity state)[/b]

[/color]

當系統而不是使用者自己出于回收記憶體的考慮,關閉了一個activity之後。使用者會期望當他再次回到那個activity的時候,它仍保持着上次離開時的樣子。

為了擷取activity被殺死前的狀态,你應該為activity實作onSaveInstanceState() 方法。Android在activity有可能被銷毀之前(即onPause() 調用之前)會調用此方法。它會将一個以名稱-值對方式記錄了activity動态狀态的Bundle 對象傳遞給該方法。當activity再次啟動時,這個Bundle會傳遞給onCreate()方法和随着onStart()方法調用的onRestoreInstanceState(),是以它們兩個都可以恢複捕獲的狀态。

與onPause()或先前讨論的其它方法不同,onSaveInstanceState() 和 onRestoreInstanceState() 并不是生命周期方法。它們并不是總會被調用。比如說,Android會在activity易于被系統銷毀之前調用 onSaveInstanceState(),但使用者動作(比如按下了BACK鍵)造成的銷毀則不調用。在這種情況下,使用者沒打算再次回到這個activity,是以沒有儲存狀态的必要。

因為onSaveInstanceState()不是總被調用,是以你應該隻用它來為activity儲存一些臨時的狀态,而不能用來儲存持久性資料。而是應該用onPause()來達到這個目的。