- 在離開畫面時 onSaveInstanceState() 會被呼叫並保存下當時畫面狀態於 bundle 中,以預防此畫面被不預期關閉; 這樣要重新開啟時,onRestoreInstanceState() 能藉由保存下來的資料來回到關閉前的狀態。
- 預設會保留住 setContentView 狀態 (ex: 輸入值)。
- onSaveInstanceState 一定會發生在 onStop 前 但不一定是在 onPause 前或後。
- 從 Honeycomb 開始 在收到 onStop 回傳前 都不是 kiiable status 這時 onSaveInstanceState 可能會在 onPause 後才被呼叫。
Activity a to Activity b running orders:
- Open b in a
- a: onSaveInstanceState -> onPause -> onStop
- Change orientation:
- a: onSaveInstanceState -> onPause -> onStop -> onDestroy -> onCreate -> onStart -> onRestoreInstanceState -> onResume
- Open b with dialog theme in a:
- a: onSaveInstanceState -> onPause (因為還能看到 a 所以不會呼叫 onStop()!)
以下狀態下不會呼叫 onRestoreInstanceState
- 從程式集開啟 app 時。
- onCreate -> onStart -> onResume
- 從 Activity b 返回 Activity a。
- onRestart -> onStart -> onResume
* Reference
- onSaveInstanceState
- onRestoreInstanceState
沒有留言:
張貼留言