Freigeben über


Activity.OnRetainNonConfigurationInstance Methode

Definition

Vom System aufgerufen, als Teil der Zerstörung einer Aktivität aufgrund einer Konfigurationsänderung, wenn bekannt ist, dass eine neue Instanz sofort für die neue Konfiguration erstellt wird.

[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

Gibt zurück

objekt, das den gewünschten Zustand hält, der an die nächste Aktivitätsinstanz weitergegeben werden soll

Attribute

Hinweise

Vom System aufgerufen, als Teil der Zerstörung einer Aktivität aufgrund einer Konfigurationsänderung, wenn bekannt ist, dass eine neue Instanz sofort für die neue Konfiguration erstellt wird. Sie können jedes beliebige Objekt zurückgeben, das Sie hier mögen, einschließlich der Aktivitätsinstanz selbst, die später abgerufen werden kann, indem Sie die neue Aktivitätsinstanz aufrufen #getLastNonConfigurationInstance() .

<em>If you are targeting android.os.Build.VERSION_CODES#HONEYCOMB or later, consider instead using a Fragment with Fragment#setRetainInstance(boolean) Fragment.setRetainInstance(boolean.</Em>

Diese Funktion wird rein als Optimierung bezeichnet, und Sie dürfen sich nicht darauf verlassen, dass sie aufgerufen wird. Wenn sie aufgerufen wird, wird eine Reihe von Garantien durchgeführt, um den Konfigurationswechsel zu optimieren: <ul><li> Die Funktion wird zwischen #onStop und .#onDestroy <li> Eine neue Instanz der Aktivität wird <immer></em> unmittelbar erstellt, nachdem diese #onDestroy() aufgerufen wurde. Insbesondere <werden em>no</em-Nachrichten> während dieser Zeit verteilt (wenn das zurückgegebene Objekt keine Aktivität zugeordnet werden muss). <li> Das hier zurückgegebene Objekt ist <immer></em> aus der #getLastNonConfigurationInstance() Methode der folgenden Aktivitätsinstanz verfügbar, wie dort beschrieben. </ul>

Diese Garantien sind so konzipiert, dass eine Aktivität diese API verwenden kann, um den umfassenden Zustand von der alten in die neue Aktivitätsinstanz, von geladenen Bitmaps bis hin zu Netzwerkverbindungen, auf gleichmäßig ausgeführte Threads zu verteilen. Beachten Sie, dass Sie keine<> Daten weitergeben sollten<>, die sich basierend auf der Konfiguration ändern können, einschließlich aller daten, die aus Ressourcen wie Zeichenfolgen, Layouts oder Drawables geladen wurden.

Die Garantie, dass während des Wechsels zur nächsten Aktivität keine Nachrichtenverarbeitung erfolgt, vereinfacht die Verwendung mit aktiven Objekten. Wenn Ihr beibehaltener Zustand beispielsweise ein android.os.AsyncTask Garantierter Zustand ist, werden die Rückruffunktionen (wie z android.os.AsyncTask#onPostExecute. B.) erst vom Aufruf aufgerufen, wenn Sie die nächste Instanz #onCreate(Bundle)ausführen. (Beachten Sie jedoch, dass es natürlich keine solche Garantie android.os.AsyncTask#doInBackground gibt, da dies in einem separaten Thread ausgeführt wird.)

<strong>Hinweis:</strong> Für die meisten Fälle sollten Sie stattdessen die Fragment API Fragment#setRetainInstance(boolean) verwenden. Dies ist auch auf älteren Plattformen über die Android-Supportbibliotheken verfügbar.

Java-Dokumentation für android.app.Activity.onRetainNonConfigurationInstance().

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: