Sobes.tech
Junior

Wat kun je vertellen over de levenscyclus van een Activity in Android?

sobes.tech AI

Antwoord van AI

De levenscyclus van Activity is een verzameling toestanden en overgangen daartussen, die elke instantie van Activity doorloopt vanaf het moment van creatie tot vernietiging. Het wordt gedefinieerd door een reeks callback-methoden.

De belangrijkste callback-methoden van de levenscyclus:

  • onCreate(): Wordt aangeroepen bij de eerste creatie van een Activity. Hier vindt de initialisatie van de gebruikersinterface, datakoppeling en andere eenmalige acties plaats.
  • onStart(): Wordt aangeroepen wanneer de Activity zichtbaar wordt voor de gebruiker, maar nog geen focus heeft.
  • onResume(): Wordt aangeroepen wanneer de Activity focus krijgt en actief wordt. Hier beginnen meestal animaties en andere interactieve acties.
  • onPause(): Wordt aangeroepen wanneer de Activity focus verliest, maar nog zichtbaar is (bijvoorbeeld een semi-transparant dialoogvenster erboven). Hier moeten resource-intensieve operaties worden gestopt.
  • onStop(): Wordt aangeroepen wanneer de Activity niet meer zichtbaar is voor de gebruiker. Hier worden niet-opgeslagen gegevens opgeslagen en niet meer benodigde bronnen vrijgegeven.
  • onDestroy(): Wordt aangeroepen voordat de Activity wordt vernietigd. Hier worden alle resterende bronnen vrijgegeven.
  • onRestart(): Wordt aangeroepen na onStop() wanneer de Activity opnieuw wordt weergegeven. Hierop volgt onStart().

Grafisch kan de levenscyclus als volgt worden voorgesteld:

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

Er bestaan ook overgangen:

  • Created -> Started (na onStart())
  • Started -> Resumed (na onResume())
  • Resumed -> Paused (wanneer focus verloren gaat)
  • Paused -> Resumed (wanneer focus terugkrijgt)
  • Paused -> Stopped (wanneer volledig wordt verborgen)
  • Stopped -> Destroyed (bij het beëindigen van de activiteit)
  • Stopped -> Restarted -> Started (na onRestart())

Het is belangrijk om de toestand van de Activity correct te beheren in deze callback-methoden om geheugenlekken te voorkomen en het juiste gedrag van de applicatie te garanderen bij het wijzigen van de configuratie of het schakelen tussen Activity-instanties. Voor het opslaan van de toestand wordt onSaveInstanceState() gebruikt (voor onStop()) en het herstel gebeurt in onCreate() of onRestoreInstanceState() (na onStart()).

Voorbeeld van gebruik van onSaveInstanceState():

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

// Toestand herstellen
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // Gebruik myData
    }
}