Activity.OnRetainNonConfigurationInstance 方法

定义

由系统调用,这是由于配置更改而销毁活动的一部分,当已知将立即为新配置创建新实例时。

[Android.Runtime.Register("onRetainNonConfigurationInstance", "()Ljava/lang/Object;", "GetOnRetainNonConfigurationInstanceHandler")]
public virtual Java.Lang.Object? OnRetainNonConfigurationInstance ();
[<Android.Runtime.Register("onRetainNonConfigurationInstance", "()Ljava/lang/Object;", "GetOnRetainNonConfigurationInstanceHandler")>]
abstract member OnRetainNonConfigurationInstance : unit -> Java.Lang.Object
override this.OnRetainNonConfigurationInstance : unit -> Java.Lang.Object

返回

保留要传播到下一个活动实例的所需状态的任何对象

属性

注解

由系统调用,这是由于配置更改而销毁活动的一部分,当已知将立即为新配置创建新实例时。 可以返回喜欢此处的任何对象,包括活动实例本身,稍后可以通过在新活动实例中调用 #getLastNonConfigurationInstance() 来检索该对象。

<em>如果你的目标是 android.os.Build.VERSION_CODES#HONEYCOMB 或更高版本,请考虑改用 FragmentFragment#setRetainInstance(boolean) Fragment.setRetainInstance(boolean.</em>

此函数纯粹是作为优化调用的,不能依赖它被调用。 调用时,将做出许多保证,以帮助优化配置切换:<ul<>li> 函数将在两#onDestroy者之间#onStop调用。 <li> 活动的新实例将<>始终</em> 在调用此#onDestroy()活动后立即创建。 特别是, <在此期间将调度 em>no</em> 消息(当返回的对象没有要与之关联的活动时)。 <> li 此处返回的对象将<>始终</em> 从#getLastNonConfigurationInstance()以下活动实例的方法获取,如此处所述。 </ul>

这些保证旨在使活动能够使用此 API 将大量状态从旧活动实例传播到新活动实例,从加载的位图到网络连接,甚至主动运行线程。 请注意,不应<></em> 传播可能基于配置更改的任何数据,包括从资源(如字符串、布局或可绘制对象)加载的任何数据。

在切换到下一个活动期间没有消息处理保证可以简化对活动对象的使用。 例如,如果保留状态是 android.os.AsyncTask 可以保证其回叫函数(如 android.os.AsyncTask#onPostExecute)不会从此处调用,直到执行下一个实例 #onCreate(Bundle)。 (但请注意,当然没有这种保证 android.os.AsyncTask#doInBackground ,因为该线程在单独的线程中运行。

<strong Note:</strong>> For most cases you should use the Fragment APIFragment#setRetainInstance(boolean); this is also available on older platforms through the Android support libraries.

适用于 . 的 android.app.Activity.onRetainNonConfigurationInstance()Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于