Activity.OnSaveInstanceState 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
OnSaveInstanceState(Bundle) |
呼叫 以從活動擷取每個實例狀態,再被終止,以便還原 |
OnSaveInstanceState(Bundle, PersistableBundle) |
這與 |
OnSaveInstanceState(Bundle)
呼叫 以從活動擷取每個實例狀態,再被終止,以便還原 #onCreate
#onRestoreInstanceState
或 中狀態( Bundle
這個方法所填入的 將會傳遞至兩者)。
[Android.Runtime.Register("onSaveInstanceState", "(Landroid/os/Bundle;)V", "GetOnSaveInstanceState_Landroid_os_Bundle_Handler")]
protected virtual void OnSaveInstanceState (Android.OS.Bundle outState);
[<Android.Runtime.Register("onSaveInstanceState", "(Landroid/os/Bundle;)V", "GetOnSaveInstanceState_Landroid_os_Bundle_Handler")>]
abstract member OnSaveInstanceState : Android.OS.Bundle -> unit
override this.OnSaveInstanceState : Android.OS.Bundle -> unit
參數
- outState
- Bundle
要在其中放置已儲存狀態的套件組合。
- 屬性
備註
呼叫 以從活動擷取每個實例狀態,再被終止,以便還原 #onCreate
#onRestoreInstanceState
或 中狀態( Bundle
這個方法所填入的 將會傳遞至兩者)。
這個方法會在活動可能終止之前呼叫,如此一來,當活動在未來某個時間回來時,就可以還原其狀態。 例如,如果在活動 A 前面啟動活動 B,而且在某些時候活動 A 會終止以回收資源,活動 A 將有機會透過此方法儲存其使用者介面的目前狀態,如此一來,當使用者返回活動 A 時,使用者介面的狀態就可以透過 #onCreate
或 #onRestoreInstanceState
還原。
請勿將這個方法與活動生命週期回呼混淆,例如 #onPause
,當使用者不再主動與活動互動,或 #onStop
活動變成不可見時呼叫這個方法時,一律會呼叫這個回呼。 呼叫 和 #onStop
的#onPause
其中一個範例,不是這個方法,就是當使用者從活動 B 巡覽回活動 A:不需要呼叫 #onSaveInstanceState
B,因為該特定實例永遠不會還原,因此系統會避免呼叫它。 當 #onPause
呼叫 而不是 #onSaveInstanceState
活動 B 在活動 A 前面啟動時,系統可能會避免在 B 存留期間未終止活動 A,因為 A 的使用者介面狀態會保持不變,所以系統可能會避免在 #onSaveInstanceState
活動 A 的存留期間呼叫活動 A。
默認實作會藉由呼叫android.view.View#onSaveInstanceState()
階層中具有標識符的每個檢視,以及儲存目前焦點檢視的標識碼,為您處理大部分的UI個別實例狀態(所有檢視都是由預設實作還原)。#onRestoreInstanceState
如果您覆寫此方法以儲存每個個別檢視未擷取的其他資訊,您可能會想要呼叫默認實作,否則請準備好自行儲存每個檢視的所有狀態。
如果呼叫,這個方法會在 之後針對以 開頭android.os.Build.VERSION_CODES#P
之平臺為目標的應用程序發生#onStop
。 針對以舊版平臺為目標的應用程式,此方法會發生在 之前 #onStop
或之後,並不能保證它是否會在 之前或之後 #onPause
發生。
的 android.app.Activity.onSaveInstanceState(android.os.Bundle)
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
另請參閱
適用於
OnSaveInstanceState(Bundle, PersistableBundle)
這與 #onSaveInstanceState
相同,但針對使用 屬性 android.R.attr#persistableMode
設定為 persistAcrossReboots
所建立的活動呼叫。
[Android.Runtime.Register("onSaveInstanceState", "(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V", "GetOnSaveInstanceState_Landroid_os_Bundle_Landroid_os_PersistableBundle_Handler")]
public virtual void OnSaveInstanceState (Android.OS.Bundle outState, Android.OS.PersistableBundle outPersistentState);
[<Android.Runtime.Register("onSaveInstanceState", "(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V", "GetOnSaveInstanceState_Landroid_os_Bundle_Landroid_os_PersistableBundle_Handler")>]
abstract member OnSaveInstanceState : Android.OS.Bundle * Android.OS.PersistableBundle -> unit
override this.OnSaveInstanceState : Android.OS.Bundle * Android.OS.PersistableBundle -> unit
參數
- outState
- Bundle
要在其中放置已儲存狀態的套件組合。
- outPersistentState
- PersistableBundle
將在重新啟動時儲存的狀態。
- 屬性
備註
這與 #onSaveInstanceState
相同,但針對使用 屬性 android.R.attr#persistableMode
設定為 persistAcrossReboots
所建立的活動呼叫。 android.os.PersistableBundle
傳入的 將會儲存#onCreate(Bundle, PersistableBundle)
,並在下次裝置重新啟動之後,第一次重新啟動此活動時顯示。
的 android.app.Activity.onSaveInstanceState(android.os.Bundle, android.os.PersistableBundle)
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
另請參閱
- OnSaveInstanceState(Bundle)
- OnCreate(Bundle)
- <xref:Android.App.Activity.OnRestoreInstanceState(Android.OS.Bundle%2c+Android.OS.PersistableBundle)>
- OnPause()