Neustart der Activity bei Bild-Drehung(rotation) – muss das sein? Den Lebenszyklus/Lifecycle einer Activity richtig verstehen

Es gibt einige Lösungen zu dem Problem, dass die Activity neu startet wenn der Bildschirm oder das Smartphone gedreht wird. Im folgenden werden alle Lösungsansätze behandelt. Dem Zugrunde liegt der Lebenszyklus einer Activity.

1. Das Rotieren oder die Drehung ganz verhindern
2. Die aktuellen Werte und Daten kurzzeitig speichern und nach „Neustart“ wieder abrufen
a. Werte u. Daten manuell speichern (in den SharedPreferences)
b. Werte u. Daten automatisch speichern (über ID)
3. Den Neustart der Activity bei Drehung verhindern

Punkt 3 ist mein persönlicher Favorit, da man nur in Ausnahmefällen den Neustart der Activity beim Drehen braucht.

1. Das Rotieren oder die Drehung ganz verhindern:
In der Manifest.xml, im Activity „Block“ wird der Zusatz „android:screenOrientation=“portrait““ gemacht. Dadurch bleibt das Bild des Smartphones immer nur in der Portrait-Ansicht(hochkant). Bei „landscape“ genau andersrum.

oder


2. Die aktuellen Werte und Daten kurzzeitig speichern und nach „Neustart“ wieder abrufen:

a. Werte u. Daten manuell speichern (in den SharedPreferences)

Die SharedPreferences nehmen einfache Daten vorübergehend auf und bewahren diese für kurze Zeit im Gedächtnis sobald die Activity neu gestartet wird.
Dies kann man aber auch manuell erledigen indem man folgende Methoden aufruft:
Voraussetzung ist eine Feldvariable. Hier: „String temp;“

 Die Methode „onSaveInstanceState()“ wird vor der „onPause()“ Methode aufgerufen. Also bevor die Activity „herunterfährt“.
Die passende „gegen-Methode“ heißt „onRestoreInstanceState()“ und wird nach der Methode „onStart“ aufgerufen. Diese Methode wird folgendermaßen aufgerufen:

 In der Methode „onSaveInstanceState()“ wird der gerade sichtbare Inhalt z.B. eins EditText gespeichert und in der Methode „onRestoreInstanceState()“ wird dieser Inhalt wieder abgerufen.

b. Werte u. Daten automatisch speichern

Wenn man im Layout dem View (z.B. einem EditText) eine ID zuweist dann wird der Inhalt des EditText übernommen, auch wenn die Activity neu startet, z.B. bei Drehung des Mobiltelefons.
ID_ul_001
ID_ul_002


3. Den Neustart der Activity bei Drehung verhindern:
Für das Android Betriebssystem ist eine Drehung ein „Configuration Change“ und deswegen wird auf diesen hin ein neustart der Activity veranlasst. um diesen zu vermeiden ergänzt man in der Manifest.xml folgenden Eintrag:

 Das Logging des „ConfigChanges“ geschieht auf folgende Weise:

 

Schreibe einen Kommentar