Alle Existenzereignisse unter Android [] (Alle Existenzereignisse unter Android), Lektion, Seite 723787
https://www.purl.org/stefan_ram/pub/alle_existenzereignisse_android (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Android-Entwicklung

Die wichtigsten Aktivitätsereignisse unter Android 

Eine Aktivität definiert verschiedene Methoden, die dann unter bestimmten Umständen vom Betriebssystem aufgerufen werden. Einige dieser Methoden werden aufgerufen, wenn sich der Zustand der Aktivität verändert. Die Signaturen solcher Methoden nennen wir auch Aktivitätsereignisse.

Zustände

Aktiv

Eine Anwendung, die sich im Vordergrund befindet ist aktiv.

Pausiert

Eine Anwendung ohne Fokus, die aber noch (teilweise) sichtbar ist, pausiert.

Unter anderem wird eine aktive Anwendung pausiert, wenn das Gerät in den Schlafzustand geht.

Gestoppt

Eine Anwendung, die nicht mehr sichtbar ist, ist gestoppt.

Aktivitätsereignisse

Das folgende Diagramm zeigt die wichtigsten Aktivitätsereignisse. Ihre Namen beginnen jeweils mit »on«.

Oft tritt ein Aktivitätsereignis ein, wenn sich der Zustand einer Aktivität verändert. Durch die Implementation eines Ereignisses kann eine Aktivität festlegen, wie sie auf eine Zustandsänderung reagiert.

Die Existenz einer Aktivität beginnt im Diagramm oben bei »Aktivitaet ist gestartet« und folgt dann den Pfeilen.

Weitere Erklärungen zu den Aktivitätsereignissen finden sich auch weiter unten.

Die wichtigsten Aktivitätsereignisse
                                                  .--------------.
.' '.
| Aktivitaet |
| ist gestartet |
'. .'
'--------------'
|
Gestoppt/ V
created Initialisiert .------------------.
created | .------------------>| onCreate() |
created | | '------------------'
created | | |
created Pausiert/ | V
paused Sichtbar | .------------------. .------------------.
paused | | | | onStart() |<----------------| onRestart() |
paused | | | '------------------' '------------------'
paused | | | | ^
paused | | | .<-------------------. |
paused | | | | bundle == null | |
paused | | | | V |
paused | | | | .--------------------------. |
paused | | | | | onRestoreInstanceState() | |
paused | | | | '--------------------------' |
paused | | | | | |
paused | | | '------------------->| |
paused | | Benutzer navigiert | |
paused | | zur Aktivitaet V |
paused | Aktiv/ ^ .------------------. |
resumed |Vordergrund | | onResume() |<-------------. |
resumed | | | | '------------------' | |
resumed | | | | | | |
resumed | | | | V | |
resumed | | | .--------------. .--------------. | |
resumed | | | .' '. .' '. | |
resumed | | | |Aktivitaetsprozess| | Aktivitaet | | |
resumed | | | | ist beendet | | laeuft | | |
resumed | | | '. .' '. .' | |
resumed | | | '--------------' '--------------' | |
resumed | | | ^ | | |
resumed | | | | V | |
resumed | | | | Eine andere Aktivitaet Benutzer kehrt |
resumed | | | | kommt in den Vordergrund zur Aktivitaet |
resumed | | | | | zurueck |
resumed | | | | V ^ |
resumed | | | Apps mit hoeherer .------------------. | |
paused | | Prioritaet benoetigen | onPause() |--------------' |
paused | | Speicher '------------------' |
paused | | | | |
paused | | | | : |
paused | | | | .-----------------------. |
paused | | | | | onSaveInstanceState() | |
paused | | | | '-----------------------' |
paused | | | | : |
paused | | | V V |
paused | | | Die Aktivitaet ist Benutzer navigiert
paused | | | nicht mehr sichtbar zur Aktivitaet
paused | | | | |
paused | | | V |
paused | | | .-----------------. |
paused | | '-------------------| onStop() |----------------------------'
created | '-----------------'
created | |
created | V
created | Die Aktivitaet ist
created | beendet oder vom System
created | aufgeloest worden
created | |
created | .----------------------------'
created | | |
created | | V
| .-----------------.
| | onDestroy() |
| '-----------------'
| |
'--------------------------->|
|
V
.--------------.
.' '.
| Aktivitaet |
| ist geschlossen |
'. .'
'--------------'
Quellen

https://developer.android.com/guide/components/activities/activity-lifecycle.html

developer.android.com/reference/android/app/Activity.html

Signaturen

Falls eine der folgenden Methoden überschrieben wird, soll dabei immer die gleichnamige Methode der Oberklasse aufgerufen werden.

Einigen Informationen zum Übergang zwischen verschiedenen Zuständen können dem obigen Diagramm entnommen werden. Diese Informationen werden im folgenden nicht  noch einmal alle wiederholt.

»onCreate()«

Diese Methode muß von einer App überschrieben werden, um die App zu initialisieren. Hier wird die sichtbare Fläche der Anwendung mit »setContentView(int)« angelegt.

Der Parameter ist entweder ein zuvor gespeichertes Bündel (falls eine Aktivität wiederhergestellt wird) oder der Wert »null« (falls eine neue Aktivität erzeugt wird). In dem Bündel speichert das System beim Beenden einer Aktivität (in »SaveInstanceState()«) automatisch einige Informationen über die Benutzeroberfläche, wie beispielsweise den Text in Textfeldern, die eine Kennung (»android:id«) haben.

»onStart()«

Diese Methode macht die Aktivität sichtbar und muß normalerweise nicht überschrieben werden.

»onResume()«

Diese Methode wird aufgerufen, wenn die Interaktion mit dem Benutzer beginnt.

»onPause()«

Diese Methode wird aufgerufen, wenn die direkte Interaktion mit dem Benutzer unterbrochen wird, beispielsweise, wenn sie von einer Dialog-Aktivität teilweise verdeckt wird.

Hier könnten beispielsweise Wiedergaben von Medien angehalten oder teure Ressourcen freigegeben werden.

Da »onPause()« relativ oft aufgerufen wird und Aktivitäten, die (verdeckend) über unserer Aktivität erscheinen sollen, auf die Beendigung von »onPause()« warten müssen, bevor sie erscheinen könnem, sollten in »onPause()« keine langdauernden  Aktionen erfolgen. Diese sollten vielmehr in »onStop()« erfolgen.

Hier können Änderungen als gültig eingetragen werden.

»onStop()«

Diese Methode wird aufgerufen, wenn die Aktivität gestoppt (vollständig unsichtbar) wird.

Hier können Daten gespeichert werden, auch wenn die Speicheroperationen zeitaufwendig sind. An dieser Stelle sind noch alle Informationen der Aktivität vorhanden.

Hier sollten alle noch besessenen Ressourcen freigegeben werden. (Dies kann nicht in »onDestroy()« geschehen, da »onDestroy()« nicht immer aufgerufen wird.)

Falls die Aktivität von hier aus wieder sichtbar wird, wird »onRestart()« aufgerufen, bevor die übliche Sequenz von Zuständen wieder bei »onStart()« beginnt.

»onDestroy()«

Die Aktivität wird aufgelöst, beispielsweise durch einen Aufruf von »finish()« (»isFinishing()« ist »true«) oder weil das System Platz braucht (»isFinishing()« ist »false«) oder die Gerätekonfiguration (beispielsweise die Geräteorientierung, Sprachen oder Eingabegeräte) sich ändert (»isFinishing()« ist »false«).

»onSaveInstanceState()«

Hier speichert das System beim Beenden einer Aktivität automatisch einige Informationen über die Benutzeroberfläche, wie beispielsweise den Text in Textfeldern, die eine Kennung (»android:id«) haben.

Diese Methode wird aber nicht immer aufgerufen und kann daher nicht verwendet werden, um allgemein Daten der Anwendung zu speichern.

Hier sollte »super.onSaveInstanceState(savedInstanceState);« am Ende  ausgeführt werden.

»onRestoreInstanceState«

Erhält dasselbe Bündel wie »onCreate«. Da diese Methode aber nur aufgerufen wird, wenn auch ein Bündel zum Wiederherstellen vorhanden ist, kann die Bündelreferenz hier nicht »null« sein.

Übungsaufgaben

/   Übungsaufgabe

Erstellen Sie eine App, die es erkennen läßt, wann eine bestimmte ihrer folgenden Methoden aufgerufen wurde.

Dabei sollte nicht nur die zuletzt aufgerufene Methode angezeigt werden, sondern eine Liste mit mindesten den zehn zuletzt aufgerufenen Methoden.

Beobachten Sie damit dann die Sequenz von Aufrufen

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 stefanram723787 stefan_ram:723787 Alle Existenzereignisse unter Android Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723787, slrprddef723787, 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/alle_existenzereignisse_android