Activity.OnRetainNonConfigurationInstance Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Llamado por el sistema, como parte de la destrucción de una actividad debido a un cambio de configuración, cuando se sabe que se creará inmediatamente una nueva instancia para la nueva configuración.
[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
Devoluciones
cualquier objeto que contenga el estado deseado para propagarse a la siguiente instancia de actividad
- Atributos
Comentarios
Llamado por el sistema, como parte de la destrucción de una actividad debido a un cambio de configuración, cuando se sabe que se creará inmediatamente una nueva instancia para la nueva configuración. Puede devolver cualquier objeto que desee aquí, incluida la propia instancia de actividad, que se puede recuperar más adelante llamando #getLastNonConfigurationInstance()
a en la nueva instancia de actividad.
<em>Si el destino android.os.Build.VERSION_CODES#HONEYCOMB
es o posterior, considere la posibilidad de usar en su lugar un Fragment
con Fragment#setRetainInstance(boolean) Fragment.setRetainInstance(boolean
.</em>
Esta función se llama exclusivamente como una optimización y no debe confiar en que se llame a ella. Cuando se llama a , se realizarán varias garantías para ayudar a optimizar el cambio de configuración: <ul><li> La función se llamará entre #onStop
y #onDestroy
. <li> Una nueva instancia de la actividad se>creará <siempre</em> inmediatamente después de llamar a esta#onDestroy()
. En concreto, <los mensajes em>no</em> se enviarán durante este tiempo (cuando el objeto devuelto no tiene una actividad a la que se va a asociar). <li> El objeto que devuelve aquí estará <>disponible siempre</em> desde el #getLastNonConfigurationInstance()
método de la siguiente instancia de actividad, tal como se describe allí. </ul>
Estas garantías están diseñadas para que una actividad pueda usar esta API para propagar un estado extenso de la instancia de actividad antigua a nueva, desde mapas de bits cargados hasta conexiones de red, para ejecutar subprocesos de forma uniforme. Tenga en cuenta que no debe <><> propagar ningún dato que pueda cambiar en función de la configuración, incluidos los datos cargados desde recursos como cadenas, diseños o dibujables.
La garantía de ningún control de mensajes durante el cambio a la siguiente actividad simplifica el uso con objetos activos. Por ejemplo, si el estado retenido es un android.os.AsyncTask
que se garantiza que sus funciones de devolución de llamada (como android.os.AsyncTask#onPostExecute
) no se llamarán desde la llamada aquí hasta que ejecute la instancia siguiente.#onCreate(Bundle)
(Sin embargo, tenga en cuenta que, por supuesto, no existe ninguna garantía de este tipo, android.os.AsyncTask#doInBackground
ya que se ejecuta en un subproceso independiente).
<strong>Note:</strong> Para la mayoría de los casos, debe usar la Fragment
API Fragment#setRetainInstance(boolean)
en su lugar; esto también está disponible en plataformas anteriores a través de las bibliotecas de compatibilidad de Android.
Documentación de Java para android.app.Activity.onRetainNonConfigurationInstance()
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.