in OnPause() auf savedInstanceState zugreifen

  • 2 Antworten
  • Letztes Antwortdatum
B

BlupBlup

Ambitioniertes Mitglied
1
Hi,

ich wollte die onPause() Methode nutzen, um den Zustand meiner
Activity im Bundle savedInstanceState zu speichern.

Ich möchte onPause() nutzen und nicht onSaveInstanceState(Bundle outState), da beim Drücken des Back Buttons onSaveInstanceState
nicht aufgerufen wird.

Nachdem der Benutzer den Back Button gedrückt und die Activity erneut aufruft, wird die onCreate(Bunde savedInstanceState) Methode durchlaufen.
Mit Hilfe des Bundles savedInstanceState könnte ich den Zustand der zerstörten Activity wieder herstellen.

Wie kann ich in der onPause() Methode auf das outState Bundle zugreifen?
 
Das geht so nicht. onSaveInstanceState und onRestoreInstanceState sind dafür da, um sicherzustellen, das der Zustand einer Activity wiederhergestellt werden kann, falls sie vom System gekillt werden sollte (z.B. wenn zu wenig Speicher verfügbar ist oder bei einem Orientation Change).

Wie der Name schon sagt, bezieht sich die Methode immer auf eine Instanz (onSaveInstanceState) einer Activity. Und nur wenn genau diese Instanz später wieder gebraucht werden sollte, wird deren State gespeichert.

In deinem Fall zerstört der User mit dem Back-Button explizit diese Instanz (beim nächsten Aufruf wird eine komplett Neue erstellt). Es ist also gar nicht möglich, dass diese Instanz jemals wieder gebraucht werden könnte, weshalb auch nie onSaveInstanceState aufgerufen wird.

In deinem Fall musst du dir die Einstellungen selber merken. Entweder über etwas wie SharedPreferences oder indem du dir etwas bastelst, wo sich Activity A den Status von Activity B merkt, zum Beispiel so
 
  • Danke
Reaktionen: BlupBlup
Danke für die Antwort
 
Zurück
Oben Unten