Порядок вызова методов жизненного цикла Activity при последовательных переходах

Activity 2 войдёт в onCreate и после finish будет уничтожена, обычно без onStart/onResume. Activity 1 при перекрытии непрозрачной Activity 3 приостанавливается и останавливается, Activity 3 доходит до onResume.

Короткий ответ

Что ответить на собеседовании

Activity 2 войдёт в onCreate и после finish будет уничтожена, обычно без onStart/onResume. Activity 1 при перекрытии непрозрачной Activity 3 приостанавливается и останавливается, Activity 3 доходит до onResume.

Подробный разбор

Ответ с пояснениями

Условие

В сценарии задействованы три Activity. Определите, какие callbacks жизненного цикла будут выполнены у каждой из них при переходах.

// Activity 1 запускает Activity 2

fun onCreate () { // это Activity 2
    this.finish()
    // открываем Activity 3
}

Ожидаемый результат

  • у Activity 1: onPause, onStop
  • у Activity 2: onDestroy
  • у Activity 3: все методы до onResume включительно

Ответ

Activity 2 войдёт в onCreate и после finish будет уничтожена, обычно без onStart/onResume. Activity 1 при перекрытии непрозрачной Activity 3 приостанавливается и останавливается, Activity 3 доходит до onResume.

finish не является return: оставшийся код onCreate продолжит выполняться и может запустить Activity 3. Для Activity 3 обычная локальная последовательность — onCreate → onStart → onResume. Не выдавайте все callbacks разных Activity за один гарантированный глобальный порядок: он зависит от перехода, режима окна и видимости. Указанное в условии onDestroy для Activity 2 не отменяет уже начатого onCreate.

Источник: developer.android.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее