Sobes.tech
Junior

Was können Sie über den Lebenszyklus einer Activity in Android erzählen?

sobes.tech KI

Antwort von AI

Der Lebenszyklus einer Activity ist eine Reihe von Zuständen und Übergängen zwischen ihnen, durch die jede Instanz einer Activity vom Erstellen bis zur Zerstörung durchläuft. Er wird durch eine Reihe von Callback-Methoden definiert.

Die wichtigsten Callback-Methoden des Lebenszyklus:

  • onCreate(): Wird beim ersten Erstellen der Activity aufgerufen. Hier erfolgt die Initialisierung der Benutzeroberfläche, Datenbindung und andere einmalige Aktionen.
  • onStart(): Wird aufgerufen, wenn die Activity sichtbar für den Benutzer wird, aber noch keinen Fokus hat.
  • onResume(): Wird aufgerufen, wenn die Activity den Fokus erhält und aktiv wird. Hier beginnen in der Regel Animationen und andere interaktive Aktionen.
  • onPause(): Wird aufgerufen, wenn die Activity den Fokus verliert, aber noch sichtbar ist (z.B. ein halbtransparenter Dialog darüber). Hier sollten ressourcenintensive Operationen gestoppt werden.
  • onStop(): Wird aufgerufen, wenn die Activity für den Benutzer nicht mehr sichtbar ist. Hier werden ungespeicherte Daten gespeichert und Ressourcen freigegeben, die nicht mehr benötigt werden.
  • onDestroy(): Wird vor der Zerstörung der Activity aufgerufen. Hier werden alle verbleibenden Ressourcen freigegeben.
  • onRestart(): Wird nach onStop() aufgerufen, wenn die Activity erneut angezeigt wird. Es folgt onStart().

Grafisch kann der Lebenszyklus so dargestellt werden:

Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed

Es gibt auch Übergänge:

  • Created -> Started (nach onStart())
  • Started -> Resumed (nach onResume())
  • Resumed -> Paused (wenn Fokus verloren geht)
  • Paused -> Resumed (wenn Fokus zurückerlangt wird)
  • Paused -> Stopped (wenn vollständig ausgeblendet)
  • Stopped -> Destroyed (bei Beendigung der Aktivität)
  • Stopped -> Restarted -> Started (nach onRestart())

Es ist wichtig, den Zustand der Activity in diesen Callback-Methoden richtig zu verwalten, um Speicherlecks zu vermeiden und das korrekte Verhalten der Anwendung bei Konfigurationsänderungen oder beim Wechsel zwischen Activity-Instanzen sicherzustellen. Zum Speichern des Zustands wird onSaveInstanceState() verwendet (vor onStop()), und die Wiederherstellung erfolgt in onCreate() oder onRestoreInstanceState() (nach onStart()).

Beispiel für die Verwendung von onSaveInstanceState():

// Zustand speichern
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// Zustand wiederherstellen
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // myData verwenden
    }
}