Mida te võite öelda Androidi Activity elutsükli kohta?
sobes.tech AI
Vastus AI-lt
Elukäik Activity — see on kogum oleku ja nende vaheliste üleminekute, mille kaudu läbib iga Activity eksemplar loomise hetkest kuni hävitamiseni. See määratletakse tagasikutsumise meetodite kogumiga.
Peamised elutsükli tagasikutsumise meetodid:
onCreate(): kutsutakse, kuiActivityluuakse esmakordselt. Siin toimub kasutajaliidese initsialiseerimine, andmete sidumine ja muud ühekordsed toimingud.onStart(): kutsutakse, kuiActivitymuutub kasutajale nähtavaks, kuid veel ei ole fookust saanud.onResume(): kutsutakse, kuiActivitysaab fookuse ja muutub aktiivseks. Siin tavaliselt algavad animatsioonid ja muud interaktiivsed tegevused.onPause(): kutsutakse, kuiActivitykaotab fookuse, kuid on endiselt nähtav (näiteks poolläbipaistev dialoogaken üle selle). Siin tuleks peatada ressursimahukad toimingud.onStop(): kutsutakse, kuiActivityei ole enam kasutajale nähtav. Siin salvestatakse salvestamata andmed ja vabastatakse ressursid, mis enam ei ole vajalikud.onDestroy(): kutsutakse enneActivityhävitamist. Siin vabastatakse kõik ülejäänud ressursid.onRestart(): kutsutakse pärastonStop(), kuiActivityuuesti kuvatakse. Sellele järgnebonStart().
Graafiliselt võib elutsükli kujutada järgmiselt:
Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed
Samuti on olemas üleminekud:
- Created -> Started (pärast
onStart()) - Started -> Resumed (pärast
onResume()) - Resumed -> Paused (kui kaotab fookuse)
- Paused -> Resumed (kui fookus taastatakse)
- Paused -> Stopped (kui see täielikult varjatakse)
- Stopped -> Destroyed (aktiivsuse lõpetamisel)
- Stopped -> Restarted -> Started (pärast
onRestart())
Oluline on õigesti hallata Activity olekut nende callback-meetodites, et vältida mälulekkeid ja tagada rakenduse korrektne käitumine konfiguratsiooni muutmisel või Activity vahel vahetamisel. Oleku salvestamiseks kasutatakse onSaveInstanceState() (enne onStop()), ja taastamine toimub onCreate() või onRestoreInstanceState() (pärast onStart()).
Näide onSaveInstanceState() kasutamisest:
// Oleku salvestamine
override fun onSaveInstanceState(outState: Bundle) {
outState.putString("my_data", "some_value")
super.onSaveInstanceState(outState)
}
// Oleku taastamine
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
if (savedInstanceState != null) {
val myData = savedInstanceState.getString("my_data")
// Kasutada myData
}
}