Sobes.tech
Junior

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, kui Activity luuakse esmakordselt. Siin toimub kasutajaliidese initsialiseerimine, andmete sidumine ja muud ühekordsed toimingud.
  • onStart(): kutsutakse, kui Activity muutub kasutajale nähtavaks, kuid veel ei ole fookust saanud.
  • onResume(): kutsutakse, kui Activity saab fookuse ja muutub aktiivseks. Siin tavaliselt algavad animatsioonid ja muud interaktiivsed tegevused.
  • onPause(): kutsutakse, kui Activity kaotab fookuse, kuid on endiselt nähtav (näiteks poolläbipaistev dialoogaken üle selle). Siin tuleks peatada ressursimahukad toimingud.
  • onStop(): kutsutakse, kui Activity ei ole enam kasutajale nähtav. Siin salvestatakse salvestamata andmed ja vabastatakse ressursid, mis enam ei ole vajalikud.
  • onDestroy(): kutsutakse enne Activity hävitamist. Siin vabastatakse kõik ülejäänud ressursid.
  • onRestart(): kutsutakse pärast onStop(), kui Activity uuesti kuvatakse. Sellele järgneb onStart().

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
    }
}