Sobes.tech
Junior

Jakie metody cyklu życia Activity znasz i jak są one wykonywane?

sobes.tech AI

Odpowiedź od AI

  • onCreate(): Wywoływana podczas pierwszego tworzenia Activity. Używana do inicjalizacji interfejsu użytkownika i danych.
  • onStart(): Activity staje się widoczna dla użytkownika.
  • onResume(): Activity staje się aktywna i znajduje się na pierwszym planie. Użytkownik może z nią wchodzić w interakcję.
  • onPause(): Wywoływana, gdy Activity przechodzi na tył lub inna Activity ją częściowo zakrywa. Używana do zapisywania stanu, który musi być szybko przywrócony.
  • onStop(): Activity nie jest już widoczna dla użytkownika. Używana do zwalniania nieużywanych zasobów.
  • onDestroy(): Wywoływana przed zniszczeniem Activity. Używana do końcowego czyszczenia zasobów.
  • onRestart(): Wywoływana po onStop(), gdy Activity ponownie staje się widoczna.

Sekwencja wywołań metod przy starcie: onCreate() -> onStart() -> onResume().

Sekwencja przy przejściu w tło (np. przy naciśnięciu przycisku Home): onPause() -> onStop().

Sekwencja przy powrocie z tła: onRestart() -> onStart() -> onResume().

Sekwencja przy niszczeniu Activity: onPause() -> onStop() -> onDestroy().

Przy obrocie ekranu Activity jest niszczona i tworzona na nowo. Sekwencja: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume(). Do zapisywania stanu używa się onSaveInstanceState() (wywoływane przed onStop()) i odtwarzania w onCreate() lub onRestoreInstanceState() (wywoływane po onStart()).

class MyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main) // Inicjalizacja UI
        // Odzyskiwanie stanu z savedInstanceState
    }

    override fun onStart() {
        super.onStart()
        // Activity staje się widoczna
    }

    override fun onResume() {
        super.onResume()
        // Activity jest na pierwszym planie, dostępna do interakcji
    }

    override fun onPause() {
        super.onPause()
        // Activity przechodzi w tło
        // Zapisywanie stanu do szybkiego przywrócenia
    }

    override fun onStop() {
        super.onStop()
        // Activity nie jest widoczna
        // Zwolnienie zasobów
    }

    override fun onDestroy() {
        super.onDestroy()
        // Activity jest niszczona
        // Końcowe czyszczenie zasobów
    }

    override fun onRestart() {
        super.onRestart()
        // Activity wraca z tła
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        // Zapis stanu przed zniszczeniem
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        // Przywracanie stanu
    }
}