Der Lebenszyklus einer Activity

Android Entwicklung: Grundlagen Logo
Wie sieht der Lebenszyklus einer Activity aus?

Nachdem du eine App gestartet hast, wird gleich zu Beginn eine sogenannte Launcher-Activity gestartet. Wenn du nach dem Start der App nun innerhalb der App navigierst, diese zu einem bestimmten Zeitpunkt verlässt und irgendwann wieder zurückkehrst, durchlaufen in der Regel mehrere Activities unterschiedliche Zustände. Die Activity-Klasse stellt dabei eine ganze Reihe von sogenannten Callback-Methoden zur Verfügung, die es der Activity ermöglichen, zu erfahren, ob und wann sich ein Zustand geändert hat. Android kann z.B. eine Activity anlegen, stoppen oder zerstören, d.h. das Android ganz wesentlich in das Leben einer App eingreift.

Info: Ein Callback ist eine Methode, die einer anderen Methode als Parameter übergeben wird. Die Methode, die den Callback entgegen nimmt, verarbeitet diesen und sendet am Ende einen Wert zurück (deshalb "Callback").

In diesem Artikel zeigen wir dir alle Zustände, die eine Activity annehmen kann und beschreiben diese ausführlich. Zudem erklären wir dir, was passiert, wenn zwischen den Zuständen gewechselt wird. Nachfolgend zeigen wir dir zunächst einmal eine Übersicht aller Zustände (hellblaue Ellipsen) und Übergänge (hellgrüne Rechtecke) und erklären diese im Anschluss an das Schaubild. Dabei haben wir in das Schaubild Nummern (für Zustände) und Buchstaben (für Übergänge) hineingeschrieben, auf die wir in den Erklärungen referenzieren.

Lebenszyklus einer Activity

 

a) Methode: onCreate()
Sobald eine Activity gestartet wurde, wird immer zuerst die "onCreate()"-Methode aufgerufen, da innerhalb dieser Methode wichtige App-Bestandteile initialisiert werden. Dazu gehört etwa das Erstellen der Bildschirmseite mit allen View-Objekten (z.B. Buttons) über die "setContentView()"-Methode. Dieser Methode wird die ID einer XML-Datei (z.B. "activity_main") als Parameter übergeben, wobei in der XML-Datei deklariert wird, wie die Bildschirmseite aussieht. Die "onCreate()"-Methode selbst bekommt als Parameter ein Bundle-Objekt, das den zuvor gespeicherten Zustand (savedInstanceState) der Activity enthält. Falls es hier keinen vorhergehenden Zustand gibt, weil die Activity z.B. gerade erst erstellt wurde, dann wird hier ein Null-Wert übergeben. Nachdem die Methode "onCreate()" aufgerufen wurde, landet die Activity im Zustand "Created".

onCreate()-Methode

 

(1) Zustand: Created
Nachdem die Methode "onCreate()" vollständig durchlaufen wurde, landet die Activity im Zustand "Created". Hier verbleibt eine Activity jedoch nur für sehr kurze Zeit und es wird von Android rasch die Methode "onStart()" aufgerufen.

 

b) Methode: onStart()
Sobald eine Activity im Zustand "Created" ist, ruft das System den "onStart()"-Callback auf. Diese Methode bringt dabei eine Activity in den für den Benutzer sichtbaren Vordergrund. Innerhalb dieser Methode wird derjenige Code initialisiert, der für die Wartung der Benutzeroberfläche zuständig ist. Die "onStart()"-Methode ist ebenfalls rasch abgeschlossen und die Activity landet nur für sehr kurze Zeit im "Started"-Zustand.

onStart()-Methode

 

(2) Zustand: Started
Nach Durchlaufen der "onStart()"-Methode wird die Activity in den Zustand "Started" versetzt und somit für den Benutzer sichtbar. In diesem Zustand verbleibt die Activity jedoch nur für sehr kurze Zeit und ruft danach die "onResume()"-Methode auf.

 

c) Methode: onResume()
Diese Methode sorgt dafür, dass die Activity für den Benutzer interaktiv wird. Sobald also die Methode durchlaufen wurde, kann der Benutzer mit der App kommunizieren bzw. interagieren. Der darauffolgende Zustand wird "Running" oder "Resumed" genannt.

onResume()-Methode

 

(3) Zustand: Running
Wenn Zustand "Running/Resumed" erreicht ist, kann der Benutzer mit der App interagieren, da sich die Activity im Vordergrund befindet.

 

d) Methode: onPause()
Android ruft diese Methode immer dann auf, sobald der Benutzer eine Activity verlässt, z.B. wenn dieser eine andere Activity startet. Du kannst die Methode "onPause()" auch verwenden, um z.B. Operationen wie etwa eine Musikwiedergabe zu unterbrechen, während sich die Activity im Zustand "Paused" befindet, sofern du erwartest, dass diese in Kürze fortgesetzt wird. Während die Activity pausiert, kannst du zudem die "onPause()"-Methode verwenden, um Ressourcen freizugeben, die den Smartphone-Akku beanspruchen.

onPause()-Methode

 

(4) Zustand: Paused
Im Zustand "Paused" ist die Activity durch eine andere Activity blockiert bzw. überlagert. Das bedeutet, dass der Benutzer mit der überlagerten Activity nicht mehr interagieren kann, diese aber trotzdem noch teilweise zu sehen ist. Die Activity verbleibt dabei solange im Arbeitsspeicher, bis der Benutzer zu dieser zurückkehrt oder Android, aufgrund von Speichermangel, die pausierte Activity bzw. die gesamte App abgeschossen hat.

 

e) Methode: onStop()
Wenn die Activity für den Benutzer nicht mehr sichtbar ist, wurde von Android die "onStop()"-Methode aufgerufen. Dies kann z.B. der Fall sein, wenn eine neu gestartete Activity den gesamten Bildschirm überdeckt oder wenn die Activity beendet ist. Solange der Benutzer die App nicht verwendet, sollten innerhalb dieser Methode sämtliche Ressourcen freigeben werden, die nicht mehr benötigt werden.

onStop()-Methode

 

(5) Zustand: Stopped
In diesem Zustand wird die Activity vollständig von einer anderen Activity überlagert und verbleibt solange im Arbeitsspeicher, bis der Benutzer zurückkehrt oder Android die Activity bzw. komplette App, aufgrund von Ressourcenmangel, abschießt. Für den Benutzer ist die App in diesem Zustand nicht zu sehen und er kann mit dieser nicht interagieren.

 

f) Methode: onRestart()
Diese Methode wird von Android verwendet, wenn eine Activity sich im Zustand "Stopped" befand und nun wieder neu gestartet werden soll. Die "onRestart()"-Methode wird dabei stets vor der "onStart()"-Methode aufgerufen. Nach dem Aufruf dieser beiden Methoden befindet sich die App dann wieder im Zustand "Started".

onRestart()-Methode

 

g) Methode: onDestroy()
Diese Methode wird aufgerufen, bevor eine Activity zerstört wird und ist der letzte Aufruf, den diese erhält. Android ruft die "onDestroy()"-Methode entweder auf, weil die Activity aufgrund des Aufrufs der Methode "finish()" beendet wird oder weil Android den Prozess, der die Activity enthält, (vorübergehend) zerstört, um Speicherplatz zu sparen. Die Methode "onDestroy()" gibt alle Ressourcen frei, die noch nicht durch frühere Callback-Methoden wie "onStop()" oder "onPause()" freigegeben wurden.

onDestroy()-Methode

 

(6) Zustand: Destroyed
Mit diesem finalen Zustand hat das Leben einer Activity ein Ende genommen. Die angelegte Instanz der Activity auf dem Speicher wird später dann entweder durch den Garbage Collector der "Android-Virtual-Machine" aus dem Speicher entfernt oder der Prozess, indem die Activity lief, wird von Android gekillt.