Sobes.tech
Junior

Koje metode životnog ciklusa Activity poznajete i kako se one izvršavaju?

sobes.tech АИ

Одговор од АИ

  • onCreate(): Poziva se pri prvom kreiranju aktivnosti. Koristi se za inicijalizaciju korisničkog interfejsa i podataka.
  • onStart(): Aktivnost postaje vidljiva korisniku.
  • onResume(): Aktivnost postaje aktivna i nalazi se na prednjem planu. Korisnik može da interaguje s njom.
  • onPause(): Poziva se kada aktivnost prelazi u pozadinu ili je druga aktivnost delimično pokriva. Koristi se za čuvanje stanja koje je potrebno brzo obnoviti.
  • onStop(): Aktivnost više nije vidljiva korisniku. Koristi se za oslobađanje neiskorišćenih resursa.
  • onDestroy(): Poziva se pre nego što će aktivnost biti uništena. Koristi se za završno čišćenje resursa.
  • onRestart(): Poziva se nakon onStop(), kada se aktivnost ponovo postane vidljiva.

Redosled izvršavanja metoda pri pokretanju: onCreate() -> onStart() -> onResume().

Redosled izvršavanja metoda pri prelasku u pozadinu (npr. pritiskom na dugme Home): onPause() -> onStop().

Redosled izvršavanja metoda pri povratku iz pozadine: onRestart() -> onStart() -> onResume().

Redosled izvršavanja metoda pri uništavanju aktivnosti: onPause() -> onStop() -> onDestroy().

Pri okretanju ekrana, aktivnost se uništava i ponovo kreira. Redosled: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume(). Za čuvanje stanja koristi se onSaveInstanceState() (poziva se pre onStop()) i obnavljanje u onCreate() ili onRestoreInstanceState() (poziva se nakon onStart()).

class MyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main) // Inicijalizacija UI
        // Obnavljanje stanja iz savedInstanceState
    }

    override fun onStart() {
        super.onStart()
        // Aktivnost postaje vidljiva
    }

    override fun onResume() {
        super.onResume()
        // Aktivnost je na prednjem planu, dostupna za interakciju
    }

    override fun onPause() {
        super.onPause()
        // Aktivnost prelazi u pozadinu
        // Čuvanje brzo obnavljajućeg stanja
    }

    override fun onStop() {
        super.onStop()
        // Aktivnost nije vidljiva
        // Oslobađanje resursa
    }

    override fun onDestroy() {
        super.onDestroy()
        // Aktivnost se uništava
        // Završno čišćenje resursa
    }

    override fun onRestart() {
        super.onRestart()
        // Aktivnost se vraća iz pozadine
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        // Čuvanje stanja pre uništavanja
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        // Obnavljanje stanja
    }
}