Partager via


Activity.OnRetainNonConfigurationInstance Méthode

Définition

Appelé par le système, dans le cadre de la destruction d’une activité en raison d’une modification de configuration, lorsqu’il est connu qu’une nouvelle instance sera immédiatement créée pour la nouvelle configuration.

[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

Retours

tout objet contenant l’état souhaité à propager à l’instance d’activité suivante

Attributs

Remarques

Appelé par le système, dans le cadre de la destruction d’une activité en raison d’une modification de configuration, lorsqu’il est connu qu’une nouvelle instance sera immédiatement créée pour la nouvelle configuration. Vous pouvez retourner n’importe quel objet que vous aimez ici, y compris l’instance d’activité elle-même, qui peut être récupérée ultérieurement en appelant #getLastNonConfigurationInstance() dans la nouvelle instance d’activité.

<em>Si vous ciblez android.os.Build.VERSION_CODES#HONEYCOMB ou une version ultérieure, envisagez plutôt d’utiliser un Fragment avec Fragment#setRetainInstance(boolean) Fragment.setRetainInstance(boolean.</Em>

Cette fonction est appelée uniquement en tant qu’optimisation, et vous ne devez pas compter sur celle-ci appelée. Lorsqu’elle est appelée, un certain nombre de garanties seront apportées pour optimiser le changement de configuration : <ul><li> La fonction sera appelée entre #onStop et #onDestroy. <Li> Une nouvelle instance de l’activité <sera>toujours< créée> immédiatement après l’appel de #onDestroy() celui-ci. En particulier, <les messages em>no</em> sont distribués pendant cette période (lorsque l’objet retourné n’a pas d’activité à associer). <li> L’objet que vous retournez ici sera>< toujours</em> disponible à partir de la #getLastNonConfigurationInstance() méthode de l’instance d’activité suivante, comme décrit ici. </ul>

Ces garanties sont conçues afin qu’une activité puisse utiliser cette API pour propager un état étendu de l’ancienne à la nouvelle instance d’activité, des bitmaps chargées, aux connexions réseau, à des threads en cours d’exécution uniformément. Notez que vous ne devez <>pas< propager/em> les données susceptibles de changer en fonction de la configuration, y compris les données chargées à partir de ressources telles que des chaînes, des dispositions ou des dessins.

La garantie d’aucune gestion des messages pendant le basculement vers l’activité suivante simplifie l’utilisation avec des objets actifs. Par exemple, si votre état conservé est une android.os.AsyncTask garantie que ses fonctions de rappel (comme android.os.AsyncTask#onPostExecute) ne seront pas appelées à partir de l’appel ici tant que vous n’exécutez pas l’instance #onCreate(Bundle)suivante. (Notez toutefois qu’il n’existe bien sûr aucune garantie de ce type car android.os.AsyncTask#doInBackground elle s’exécute dans un thread distinct.)

<>strong Remarque :</strong> Pour la plupart des cas, vous devez utiliser l’API Fragment#setRetainInstance(boolean) à la Fragment place. Cela est également disponible sur les plateformes plus anciennes via les bibliothèques de support Android.

Documentation Java pour android.app.Activity.onRetainNonConfigurationInstance().

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

S’applique à