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, kadActivitytiek izveidota pirmo reizi. Šeit notiek UI inicializācija, datu sasaistīšana un citas vienreizējas darbības.onStart(): tiek izsaukta, kadActivitykļūst redzama lietotājam, bet vēl nav ieguvusi fokusu.onResume(): tiek izsaukta, kadActivitysaņem fokusu un kļūst aktīva. Šeit parasti sākas animācijas un citas interaktīvas darbības.onPause(): tiek izsaukta, kadActivityzaudē 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, kadActivityvairs nav redzama lietotājam. Šeit tiek saglabāti nesaglabātie dati un atbrīvoti resursi, kas vairs nav nepieciešami.onDestroy(): tiek izsaukta pirmsActivitytiks iznīcināta. Šeit tiek atbrīvoti visi atlikušies resursi.onRestart(): tiek izsaukta pēconStop(), kadActivitytiek atkal parādīta. Pēc tam sekoonStart().
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
}
}