Wird "savedInstanceState bündeln" noch aktiv, nachdem die Anwendung beendet wurde?

8

Wird savedInstanceState bundle in onCreate() Methode am Leben sein (nicht null), nachdem die Anwendung beendet wurde? Wenn dies der Fall wäre, wo dieses Bündel im System gespeichert ist.

    
Eugene 30.05.2013, 13:30
quelle

3 Antworten

14

Wenn Android den Prozess, der Ihre App hostet, zum Absturz bringt, behält es den "Status der gespeicherten Instanz" aller aktiven (nicht abgeschlossenen) Aktivitäten bei. Diese Daten werden von ActivityManager gespeichert. Wenn der Benutzer zu Ihrer Anwendung zurückkehrt, erstellt Android einen neuen Prozess für die App, instanziiert die Application -Instanz erneut und erstellt dann eine Instanz der obersten Aktivität im Aktivitätsstapel . Er ruft dann onCreate() für diese Aktivitätsinstanz auf und übergibt ihm den "gespeicherten Instanzstatus", der zuletzt für diese Aktivität gespeichert wurde.

Wenn Sie Ihr Telefon neu starten, gehen alle diese Daten verloren (Android speichert den Anwendungsstatus nicht bei Neustarts).

    
David Wasser 04.06.2013, 20:54
quelle
6

Nein, es wird nicht, Android-App beibehalten seinen Zustand, solange es ausgeführt wird: (Vordergrund und Hintergrund).

Wenn Sie nach etwas suchen, das den unterschiedlichen Lebenszyklus einer Anwendung abdecken kann, verwenden Sie so etwas wie SharedPreferences.

Betreffend

  

Wenn das System Ihren Bewerbungsprozess beendet und der Benutzer zu Ihrer Aktivität zurück navigiert

Dies geschieht nur, wenn Android Speicher benötigt und Sie müssen Ihre Aktivität beenden, um Ressourcen und Ihre Aktivitäten im Aktivitätsstapel freizugeben. Es dokumentiert, dass es eine bequeme Möglichkeit ist, Benutzererfahrung aufrechtzuerhalten.

android Dokumentationen:

  

Eine Hintergrundaktivität (eine Aktivität, die für den Benutzer nicht sichtbar ist und pausiert wurde) ist nicht mehr kritisch, sodass das System den Prozess sicher beenden kann, um Speicher für andere Vordergrund- oder sichtbare Prozesse zurück zu gewinnen. Wenn der Prozess beendet werden muss, wenn der Benutzer zurück zu der Aktivität navigiert (und auf dem Bildschirm wieder sichtbar macht), wird seine onCreate (android.os.Bundle) -Methode mit dem zuvor in onSaveInstanceState (android) bereitgestellten savedInstanceState aufgerufen .os.Bundle)

, damit es sich in demselben Zustand neu starten kann wie der Benutzer es zuletzt verlassen hat.

Sie sollten also nicht erwarten, dass der InstanceState die ganze Zeit aufrechterhalten wird. Quellcode der Aktivität bei Codegrep

Bearbeiten

Durch die Suche nach Google nach android instance state Ich kam von dieser Ressource Android eine Aktivität neu erstellen

  

Wenn Ihre Aktivität zerstört wird, weil der Benutzer Zurück drückt oder die Aktivität sich selbst beendet, ist das Systemkonzept dieser Aktivitätsinstanz für immer verloren, weil das Verhalten anzeigt, dass die Aktivität nicht länger benötigt wird. Wenn das System jedoch die Aktivität aufgrund von Systemeinschränkungen (und nicht aufgrund des normalen Anwendungsverhaltens) zerstört, merkt sich das System, obwohl es die tatsächliche Activity-Instanz nicht mehr gibt, dass es existiert, so dass das System ein neues erstellt, wenn der Benutzer dorthin zurück navigiert Instanz der Aktivität, die eine Gruppe gespeicherter Daten verwendet, die den Status der Aktivität bei deren Zerstörung beschreibt. Die gespeicherten Daten, die das System zur Wiederherstellung des vorherigen Status verwendet, werden "Instanzstatus" genannt und sind eine Sammlung von Schlüssel / Wert-Paaren, die in einem Bundle-Objekt gespeichert sind.

Bearbeiten 2 Nach dem Ausgraben von android Internals, scheint es, als ob es alles über ActivityManagerNative

Immer wenn eine Aktivität angehalten wird, wird ihr Status übergeben. Verwenden Sie ein Parcel-Objekt für den ActivityManager-Prozess.

%Vor%

Und wenn ActivityManagerNative eine Aktivität erstellt, wird dieser Status mit Parcel

an die Aktivität zurückgegeben %Vor%     
Mr.Me 30.05.2013 13:32
quelle
0
___ qstnhdr ___ Wird "savedInstanceState bündeln" noch aktiv, nachdem die Anwendung beendet wurde? ___ qstntxt ___

Wird onSavedInstanceState bundle in onSavedInstanceState Methode am Leben sein (nicht null), nachdem die Anwendung beendet wurde? Wenn dies der Fall wäre, wo dieses Bündel im System gespeichert ist.

    
___ antwort43730782 ___

Die folgende Tabelle von einem der Android-Schulungsmaterialien könnte hilfreicher sein.

Darin ist das von %code% gespeicherte Paket gültig, während die App OPEN ist, was bedeutet, dass die App PAUSED oder sogar STOPPED und DESTROYed (aus Gründen wie Rotation) aber NICHT mit der Zurück-Taste beendet werden kann.

Die Tabelle zeigt auch andere verfügbare Optionen, wenn nicht %code% .

    
___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___ answer16837648 ___

Nein, es wird nicht, Android-App beibehalten seinen Zustand, solange es ausgeführt wird: (Vordergrund und Hintergrund).

Wenn Sie nach etwas suchen, das den unterschiedlichen Lebenszyklus einer Anwendung abdecken kann, verwenden Sie so etwas wie SharedPreferences.

Betreffend

  

Wenn das System Ihren Bewerbungsprozess beendet und der Benutzer zu Ihrer Aktivität zurück navigiert

Dies geschieht nur, wenn Android Speicher benötigt und Sie müssen Ihre Aktivität beenden, um Ressourcen und Ihre Aktivitäten im Aktivitätsstapel freizugeben. Es dokumentiert, dass es eine bequeme Möglichkeit ist, Benutzererfahrung aufrechtzuerhalten.

android Dokumentationen:

  

Eine Hintergrundaktivität (eine Aktivität, die für den Benutzer nicht sichtbar ist und pausiert wurde) ist nicht mehr kritisch, sodass das System den Prozess sicher beenden kann, um Speicher für andere Vordergrund- oder sichtbare Prozesse zurück zu gewinnen. Wenn der Prozess beendet werden muss, wenn der Benutzer zurück zu der Aktivität navigiert (und auf dem Bildschirm wieder sichtbar macht), wird seine onCreate (android.os.Bundle) -Methode mit dem zuvor in onSaveInstanceState (android) bereitgestellten savedInstanceState aufgerufen .os.Bundle)

, damit es sich in demselben Zustand neu starten kann wie der Benutzer es zuletzt verlassen hat.

Sie sollten also nicht erwarten, dass der InstanceState die ganze Zeit aufrechterhalten wird. Quellcode der Aktivität bei Codegrep

Bearbeiten

Durch die Suche nach Google nach %code% Ich kam von dieser Ressource Android eine Aktivität neu erstellen

  

Wenn Ihre Aktivität zerstört wird, weil der Benutzer Zurück drückt oder die Aktivität sich selbst beendet, ist das Systemkonzept dieser Aktivitätsinstanz für immer verloren, weil das Verhalten anzeigt, dass die Aktivität nicht länger benötigt wird. Wenn das System jedoch die Aktivität aufgrund von Systemeinschränkungen (und nicht aufgrund des normalen Anwendungsverhaltens) zerstört, merkt sich das System, obwohl es die tatsächliche Activity-Instanz nicht mehr gibt, dass es existiert, so dass das System ein neues erstellt, wenn der Benutzer dorthin zurück navigiert Instanz der Aktivität, die eine Gruppe gespeicherter Daten verwendet, die den Status der Aktivität bei deren Zerstörung beschreibt. Die gespeicherten Daten, die das System zur Wiederherstellung des vorherigen Status verwendet, werden "Instanzstatus" genannt und sind eine Sammlung von Schlüssel / Wert-Paaren, die in einem Bundle-Objekt gespeichert sind.

Bearbeiten 2 Nach dem Ausgraben von android Internals, scheint es, als ob es alles über ActivityManagerNative

Immer wenn eine Aktivität angehalten wird, wird ihr Status übergeben. Verwenden Sie ein Parcel-Objekt für den ActivityManager-Prozess.

%Vor%

Und wenn ActivityManagerNative eine Aktivität erstellt, wird dieser Status mit Parcel

an die Aktivität zurückgegeben %Vor%     
___ answer16927298 ___

Wenn Android den Prozess, der Ihre App hostet, zum Absturz bringt, behält es den "Status der gespeicherten Instanz" aller aktiven (nicht abgeschlossenen) Aktivitäten bei. Diese Daten werden von %code% gespeichert. Wenn der Benutzer zu Ihrer Anwendung zurückkehrt, erstellt Android einen neuen Prozess für die App, instanziiert die %code% -Instanz erneut und erstellt dann eine Instanz der obersten Aktivität im Aktivitätsstapel . Er ruft dann %code% für diese Aktivitätsinstanz auf und übergibt ihm den "gespeicherten Instanzstatus", der zuletzt für diese Aktivität gespeichert wurde.

Wenn Sie Ihr Telefon neu starten, gehen alle diese Daten verloren (Android speichert den Anwendungsstatus nicht bei Neustarts).

    
___
MNS 02.05.2017 05:37
quelle

Tags und Links