Activity用來保存和恢復狀態的方法如下:
protected void onSaveInstanceState(Bundle outState)
Activity被系統殺死時調用,如屏幕橫豎屏切換Activity被銷毀再重建等。
(1)在Activity被覆蓋或退居后臺之后,系統資源不足將其殺死,此方法會被調用;
(2)在用戶改變屏幕方向時,此方法會被調用;
(3)在當前Activity跳轉到其他Activity或者按Home鍵回到主屏,自身退居后臺時,此方法會被調用。
第一種情況我們無法保證什么時候發生,系統根據資源緊張程度去調度;第二種是屏幕翻轉方向時,系統先銷毀當前的Activity,然后再重建一個新的,調用此方法時,我們可以保存一些臨時數據;第三種情況系統調用此方法是為了保存當前窗口各個View組件的狀態。onSaveInstanceState的調用順序是在onPause之前。
protected void onRestoreInstanceState(Bundle savedInstanceState)
Activity被系統殺死后重新創建時調用,如屏幕橫豎屏切換Activity被銷毀再重建等。
(1)在Activity被覆蓋或退居后臺之后,系統資源不足將其殺死,然后用戶又回到了此Activity,此方法會被調用;
(2)在用戶改變屏幕方向時,重建的過程中,此方法會被調用。
我們可以重寫此方法,以便可以恢復一些臨時數據。onRestoreInstanceState的調用順序是在onStart之后。
public void onWindowFocusChanged(boolean hasFocus)
Activity窗口獲得或失去焦點時被調用,例如創建時首次呈現在用戶面前;當前Activity被其他Activity覆蓋;當前Activity轉到其他Activity或按Home鍵回到主屏,自身退居后臺;用戶退出當前Activity。