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 eenActivity. Hier vindt de initialisatie van de gebruikersinterface, datakoppeling en andere eenmalige acties plaats.onStart(): Wordt aangeroepen wanneer deActivityzichtbaar wordt voor de gebruiker, maar nog geen focus heeft.onResume(): Wordt aangeroepen wanneer deActivityfocus krijgt en actief wordt. Hier beginnen meestal animaties en andere interactieve acties.onPause(): Wordt aangeroepen wanneer deActivityfocus verliest, maar nog zichtbaar is (bijvoorbeeld een semi-transparant dialoogvenster erboven). Hier moeten resource-intensieve operaties worden gestopt.onStop(): Wordt aangeroepen wanneer deActivityniet meer zichtbaar is voor de gebruiker. Hier worden niet-opgeslagen gegevens opgeslagen en niet meer benodigde bronnen vrijgegeven.onDestroy(): Wordt aangeroepen voordat deActivitywordt vernietigd. Hier worden alle resterende bronnen vrijgegeven.onRestart(): Wordt aangeroepen naonStop()wanneer deActivityopnieuw wordt weergegeven. Hierop volgtonStart().
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
}
}