Sobes.tech
Junior

Jaké metody životního cyklu Activity znáte a jak jsou prováděny?

sobes.tech AI

Odpověď od AI

  • onCreate(): Volá při prvním vytvoření aktivity. Používá se k inicializaci uživatelského rozhraní a dat.
  • onStart(): Aktivita se stává viditelnou pro uživatele.
  • onResume(): Aktivita se stává aktivní a je na předním plánu. Uživatel s ní může interagovat.
  • onPause(): Volá se, když aktivita přechází na pozadí nebo ji jiná aktivita částečně zakrývá. Používá se k uložení stavu, který je třeba rychle obnovit.
  • onStop(): Aktivita již není viditelná pro uživatele. Používá se k uvolnění nevyužívaných zdrojů.
  • onDestroy(): Volá se před tím, než bude aktivita zničena. Používá se k finálnímu čištění zdrojů.
  • onRestart(): Volá se po onStop(), když se aktivita znovu stává viditelnou.

Pořadí volání metod při spuštění: onCreate() -> onStart() -> onResume().

Pořadí volání metod při přechodu na pozadí (například při stisknutí tlačítka Domů): onPause() -> onStop().

Pořadí volání metod při návratu z pozadí: onRestart() -> onStart() -> onResume().

Pořadí volání metod při zničení aktivity: onPause() -> onStop() -> onDestroy().

Při otočení obrazovky je aktivita zničena a znovu vytvořena. Pořadí: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume(). Pro uložení stavu se používá onSaveInstanceState() (volá se před onStop()) a obnovení v onCreate() nebo onRestoreInstanceState() (volá se po onStart()).

class MyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main) // Inicializace UI
        // Obnovení stavu z savedInstanceState
    }

    override fun onStart() {
        super.onStart()
        // Aktivita se stává viditelnou
    }

    override fun onResume() {
        super.onResume()
        // Aktivita je na předním plánu, dostupná k interakci
    }

    override fun onPause() {
        super.onPause()
        // Aktivita přechází na pozadí
        // Uložení rychle obnovitelného stavu
    }

    override fun onStop() {
        super.onStop()
        // Aktivita není viditelná
        // Uvolnění zdrojů
    }

    override fun onDestroy() {
        super.onDestroy()
        // Aktivita je zničena
        // Finální čištění zdrojů
    }

    override fun onRestart() {
        super.onRestart()
        // Aktivita se vrací z pozadí
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        // Uložení stavu před zničením
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        // Obnovení stavu
    }
}