Bündelpersistenz unter Android [] (Bündelpersistenz unter Android), Lektion, Seite 723535
https://www.purl.org/stefan_ram/pub/buendelpersistenz_android (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Android-Entwicklung

Bündelpersistenz unter Android 

Auflösung der Aktivität durch Drehen

Beim Drehen des Gerätes (Strg-F12 im Emulator) geht der Zählerstand des bisher in diesem Kurs entwickelten Zählerprogramms verloren. Dies liegt daran, daß unsere Aktivität beim Drehen des Geräts aufgelöst  wird, wodurch auch der Zustand des Textfelds verloren geht. Die Aktivität wird anschließend wiederhergestellt, jedoch ohne daß dabei der alte Zählerstand automatisch wieder eingesetzt wird.

Sicherung von Daten in einem Bündel

Wir können den Zählerstand aber beim Auftreten des dafür vorgesehenen Ereignisses »onSaveInstanceState(android.os.Bundle)« in ein Bündel sichern  und beim Neustart der Aktivität nach dem Drehen aus dem Bündel wiederherstellen.

Die Basisklasse unserer Klasse enthält schon Definitionen jener beiden Signaturen, so daß es keine Fehlermeldung gibt, wenn wir diese – wie bisher – nicht  selber deklarieren.

In dem folgenden Programmfragment zum Sichern von Zuständen steht »OLD« für einen int-Ausdruck, welcher einen zu sichernden int-Wert enthält.

[Programmfragment]
@java.lang.Override protected void onSaveInstanceState
( final android.os.Bundle bundle )
{ bundle.putInt( "", OLD );
super.onSaveInstanceState( bundle ); }

In dem folgenden Programmfragment zum Wiederherstellen von Zuständen beim Ereignis »onRestoreInstanceState(android.os.Bundle)« steht »SET« für ein Programmstück, welches den Wert des dahinterstehenden Ausdrucks an die gewünschte Stelle schreibt (»SET« kann dazu auch der Name einer Methode sein).

[Programmfragment]
@java.lang.Override protected void onRestoreInstanceState
( final android.os.Bundle bundle )
{ super.onRestoreInstanceState( bundle );
if( bundle !=null )
{ if( bundle.containsKey( "" ))SET( bundle.getInt( "" )); }}

Die Wiederherstellung, welche oben in der extra Methode »onRestoreInstanceState(android.os.Bundle)« erfolgt, hätte aber statt dessen auch in der schon vorhandenen Methode »onCreate(android.os.Bundle)« erfolgen können. Es gilt aber als übersichtlicher (und erfüllt hier auch das Open-Closed -Prinzip), sie in eine extra Methode zu legen.

Übungsaufgaben

/   Übungsaufgaben (25 Minuten) [L]

Bauen Sie die beiden Programmfragment an die richtigen Stellen in das vorhandene Programm ein. Passen Sie das Programm dann so an, daß die Informationen über den Zählerstand beim Drehen des Gerätes nicht  mehr verloren gehen. Dabei ist es erlaubt, alle  Teile des Programms – auch die neu eingebauten Fragmente – zu überarbeiten. (Fortgeschrittene Java -Programmierer können hierbei an “Tell, don't ask! ” denken.)

Falls Sie keinen passenden Quelltext der letzten bisherigen Programmversion zur Hand haben, können Sie das Programm aus der Lektion 723442 „Farbgestaltung unter Android “ verwenden.

Tell, don't ask Voraussetzung : Wir wollen eine Aktion durchführen, aber wir haben keinen Zugriff auf die dafür nötigen Daten. Falsch : Wir holen die Daten aus ihrem Objekt heraus, ändern sie, und schreiben sie zurück. Richtig : Wir senden dem Objekt mit den Daten eine Nachricht, daß es diese Aktion machen soll. Begründung : In der objektorientierten Programmierung werden Daten in Objekten gekapselt, das falsche Verfahren würde die Kapselung zerstören (weil es die Daten aus der Kapsel holt), das richtige Verfahren ist mit der Kapselung verträglich (weil die Daten dabei die ganze Zeit in der Kapsel bleiben).

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723535 stefan_ram:723535 Bündelpersistenz unter Android Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723535, slrprddef723535, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/buendelpersistenz_android