Выбор ответа Middle Жизненный цикл Activity и Fragment обновлено

singleTop и onNewIntent

Вопрос

Activity с launchMode="singleTop" уже наверху стека, и её запускают снова. Что произойдёт?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Новый экземпляр не создаётся, старый получит onNewIntent. singleTop переиспользует экземпляр, только если он уже на вершине стека, и доставляет новый Intent в onNewIntent.

Варианты ответа

  1. Создастся новый экземпляр поверх, как при режиме standard
  2. Все Activity выше неё закроются, а она получит onNewIntent
  3. Новый экземпляр не создаётся, старый получит onNewIntentправильный ответ
  4. Повторный запуск будет проигнорирован без вызова колбэков

Разбор

singleTop переиспользует экземпляр, только если он уже на вершине стека, и доставляет новый Intent в onNewIntent. Если Activity не наверху, создастся новый экземпляр, как при standard. Очистка стека выше существующего экземпляра это поведение singleTask или флага FLAG_ACTIVITY_CLEAR_TOP.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.