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
活动变得不可见时调用此方法。 调用和#onPause
#onStop
调用此方法的一个示例是,当用户从活动 B 导航回活动 A:无需调用 #onSaveInstanceState
B,因为该特定实例永远不会还原,因此系统不会调用它。 在活动 A 前面启动活动 B 时 #onPause
,例如 #onSaveInstanceState
,如果活动 A 在生存期内未终止活动 A,则系统可能会避免调用 #onSaveInstanceState
活动 A,因为 A 用户界面的状态将保持不变。
默认实现通过调用 android.view.View#onSaveInstanceState()
具有 ID 的层次结构中的每个视图,以及保存当前聚焦视图的 ID(所有视图在默认实现 #onRestoreInstanceState
中还原)来处理大多数每个实例的 UI 状态。 如果重写此方法以保存每个单独视图未捕获的其他信息,则可能需要调用默认实现,否则请准备好自行保存每个视图的所有状态。
如果调用,此方法将在面向平台的应用程序之后 #onStop
进行,从 android.os.Build.VERSION_CODES#P
此开始。 对于面向早期平台版本的应用程序,此方法将发生之前 #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 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
另请参阅
- OnSaveInstanceState(Bundle)
- OnCreate(Bundle)
- <xref:Android.App.Activity.OnRestoreInstanceState(Android.OS.Bundle%2c+Android.OS.PersistableBundle)>
- OnPause()