Sobes.tech
Junior

Ko jūs varat pastāstīt par Android Activity dzīves ciklu?

sobes.tech AI

Atbilde no AI

Dzīves cikls Activity ir stāvokļu kopums un pārejas starp tiem, caur kurām pāriet katrs Activity instances no tā izveides brīža līdz tās iznīcināšanai. Tas ir definēts ar atgriezenisko zvanu metožu kopumu.

Galvenās atgriezenisko zvanu metodes dzīves ciklā:

  • onCreate(): tiek izsaukta, kad Activity tiek izveidota pirmo reizi. Šeit notiek UI inicializācija, datu sasaistīšana un citas vienreizējas darbības.
  • onStart(): tiek izsaukta, kad Activity kļūst redzama lietotājam, bet vēl nav ieguvusi fokusu.
  • onResume(): tiek izsaukta, kad Activity saņem fokusu un kļūst aktīva. Šeit parasti sākas animācijas un citas interaktīvas darbības.
  • onPause(): tiek izsaukta, kad Activity zaudē fokusu, bet vēl ir redzama (piemēram, puscaurspīdīgs dialoga logs virs tās). Šeit jāaptur resursu prasīgas operācijas.
  • onStop(): tiek izsaukta, kad Activity vairs nav redzama lietotājam. Šeit tiek saglabāti nesaglabātie dati un atbrīvoti resursi, kas vairs nav nepieciešami.
  • onDestroy(): tiek izsaukta pirms Activity tiks iznīcināta. Šeit tiek atbrīvoti visi atlikušies resursi.
  • onRestart(): tiek izsaukta pēc onStop(), kad Activity tiek atkal parādīta. Pēc tam seko onStart().

Grafiski dzīves cikls var tikt attēlots šādi:

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

Ir arī pārejas:

  • Created -> Started (pēc onStart())
  • Started -> Resumed (pēc onResume())
  • Resumed -> Paused (kad zaudē fokusu)
  • Paused -> Resumed (kad atgūst fokusu)
  • Paused -> Stopped (kad pilnībā paslēpj)
  • Stopped -> Destroyed (pēc aktivitātes beigām)
  • Stopped -> Restarted -> Started (pēc onRestart())

Ir svarīgi pareizi pārvaldīt Activity stāvokli šajos callback metodēs, lai izvairītos no atmiņas noplūdēm un nodrošinātu pareizu lietojumprogrammas uzvedību konfigurācijas izmaiņu vai pārslēgšanās laikā starp Activity. Stāvokļa saglabāšanai tiek izmantota onSaveInstanceState() (pirms onStop()), bet atjaunošana notiek onCreate() vai onRestoreInstanceState() (pēc onStart()).

onSaveInstanceState() piemērs:

// Stāvokļa saglabāšana
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// Stāvokļa atjaunošana
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // Izmantot myData
    }
}