Ich habe eine Variable, die ich mit onSaveInstanceState erfolgreich gespeichert und wiederhergestellt habe
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); // the UI component values are saved here.
outState.putDouble("VALUE", liter);
Toast.makeText(this, "Activity state saved", Toast.LENGTH_LONG).show();
}
Dies funktioniert jedoch nur, wenn die Aktivität zerstört wird. Ich möchte die gleiche Variable speichern, indem ich die onPause () -Methode überschreibe und zurückkehre, wenn die Aktivität nicht mehr angehalten wurde. Ideen, wie dies getan werden kann, werden sehr geschätzt
Wie Sie herausgefunden haben, ist onSaveInstanceState
nur in Situationen nützlich, in denen Sie die gleiche sogenannte "Instanz" der Activity neu erstellen müssen, nachdem sie vom Betriebssystem zerstört wurde. Dies liegt in der Regel daran, dass sie sich zu weit im hinteren Stack befindet, um am Leben zu bleiben Gedächtnisdruck.
Das Speichern Ihrer Daten in onPause
ist in der Tat der Weg zu einer Persistenz, die über eine einzelne Ausführung Ihrer Aktivität hinausgeht. Damit dies funktioniert, stehen Ihnen mehrere Optionen zur Verfügung:
Ich empfehle Ihnen, diese Dokumentation zu lesen, um mehr über jede dieser Optionen zu erfahren:
http://developer.Android.com/guide/topics/data/data-storage.html
Sie können Ihre Variable foo
einfach dem Klassenmitglied mFoo
in onPause
zuweisen, vorausgesetzt, Sie speichern mFoo
auch im Statusbündel in onSaveInstanceState
. Dasselbe gilt für das Wiederherstellungsszenario.
Wenn Sie den Aktivitätsstatus in den gemeinsamen Einstellungen speichern möchten, können Sie die GNStateManager-Komponente der von mir geschriebenen Bibliothek auschecken, um das Speichern und Abrufen der erforderlichen Felder der mit my @GNState-Annotation gekennzeichneten Aktivität zu erleichtern. Es ist einfach zu bedienen. Andere Einzelobjektklassenobjektzustände können ebenfalls gespeichert werden. Informationen zu Setup und Verwendung finden Sie hier: https://github.com/noxiouswinter/gnlib_Android/wiki/gnstatemanager