Sobes.tech
Junior

Кои методи на жизнения цикъл на Activity знаете и как се изпълняват?

sobes.tech AI

Отговор от AI

  • onCreate(): Извиква се при първото създаване на Activity. Използва се за инициализация на потребителския интерфейс и данни.
  • onStart(): Activity става видима за потребителя.
  • onResume(): Activity става активна и е на преден план. Потребителят може да взаимодейства с нея.
  • onPause(): Извиква се, когато Activity преминава на заден план или друга Activity частично я закрива. Използва се за запазване на състоянието, което трябва бързо да се възстанови.
  • onStop(): Activity вече не е видима за потребителя. Използва се за освобождаване на неиспользвани ресурси.
  • onDestroy(): Извиква се преди Activity да бъде унищожена. Използва се за окончателно почистване на ресурсите.
  • onRestart(): Извиква се след onStop(), когато Activity отново стане видима.

Последователността на изпълнение на методите при стартиране: onCreate() -> onStart() -> onResume().

Последователността при преминаване на заден план (например при натискане на бутона Home): onPause() -> onStop().

Последователността при връщане от заден план: onRestart() -> onStart() -> onResume().

Последователността при унищожаване на Activity: onPause() -> onStop() -> onDestroy().

При завъртане на екрана Activity се унищожава и създава наново. Последователност: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume(). За запазване на състоянието се използва onSaveInstanceState() (извиква се преди onStop()) и възстановяване в onCreate() или onRestoreInstanceState() (извиква се след onStart()).

class MyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main) // Инициализация на UI
        // Възстановяване на състоянието от savedInstanceState
    }

    override fun onStart() {
        super.onStart()
        // Activity става видима
    }

    override fun onResume() {
        super.onResume()
        // Activity е на преден план, достъпна за взаимодействие
    }

    override fun onPause() {
        super.onPause()
        // Activity преминава на заден план
        // Запазване на бързо възстановяемо състояние
    }

    override fun onStop() {
        super.onStop()
        // Activity не е видима
        // Освобождаване на ресурси
    }

    override fun onDestroy() {
        super.onDestroy()
        // Activity се унищожава
        // Окончателно почистване на ресурси
    }

    override fun onRestart() {
        super.onRestart()
        // Activity се връща от заден план
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        // Запазване на състоянието преди унищожаване
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        // Възстановяване на състоянието
    }
}