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 hier beliebige Objekte zurückgeben, einschließlich der Aktivitätsinstanz selbst, die später abgerufen werden kann, indem Sie getLastNonConfigurationInstance() in der neuen Aktivitätsinstanz aufrufen. Wenn Sie auf Build.VERSION_CODES abzielen. HONEYCOMB oder höher sollten Sie stattdessen ein Fragment mit Fragment.setRetainInstance(boolean) verwenden. 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 zur Optimierung des Konfigurationswechsels vorgenommen: Die Funktion wird zwischen onStop() und onDestroy() aufgerufen. Eine neue Instanz der Aktivität wird immer sofort erstellt, nachdem dies onDestroy() aufgerufen wurde. Insbesondere werden während dieser Zeit keine Nachrichten versendet (wenn das zurückgegebene Objekt keine Aktivität zugeordnet ist). Das hier zurückgegebene Objekt ist immer über die getLastNonConfigurationInstance()-Methode der folgenden Aktivitätsinstanz verfügbar, wie hier beschrieben. Diese Garantien sind so konzipiert, dass eine Aktivität diese API verwenden kann, um einen umfangreichen 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 AsyncTask ist, wird sichergestellt, dass seine Rückruffunktionen (z. B. AsyncTask.onPostExecute(Result)) vom Aufruf hier erst aufgerufen werden, wenn Sie die onCreate(Bundle)-Instanz der nächsten Instanz ausführen. (Beachten Sie jedoch, dass es natürlich keine solche Garantie für AsyncTask.doInBackground(Params) gibt, da dies in einem separaten Thread ausgeführt wird.) Hinweis: In den meisten Fällen sollten Sie stattdessen die Fragment-API Fragment.setRetainInstance(boolean) verwenden; Dies ist auch auf älteren Plattformen über die Android-Supportbibliotheken verfügbar.

Android-Referenz für android.app.Activity.onRetainNonConfigurationInstance.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: