Выбор ответа Middle Жизненный цикл Activity и Fragment обновлено
singleTop и onNewIntent
Вопрос
Activity с launchMode="singleTop" уже наверху стека, и её запускают снова. Что произойдёт?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Новый экземпляр не создаётся, старый получит onNewIntent. singleTop переиспользует экземпляр, только если он уже на вершине стека, и доставляет новый Intent в onNewIntent.
Варианты ответа
- Создастся новый экземпляр поверх, как при режиме
standard - Все Activity выше неё закроются, а она получит
onNewIntent - Новый экземпляр не создаётся, старый получит
onNewIntentправильный ответ - Повторный запуск будет проигнорирован без вызова колбэков
Разбор
singleTop переиспользует экземпляр, только если он уже на вершине стека, и доставляет новый Intent в onNewIntent. Если Activity не наверху, создастся новый экземпляр, как при standard. Очистка стека выше существующего экземпляра это поведение singleTask или флага FLAG_ACTIVITY_CLEAR_TOP.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что происходит с Activity при повороте экрана
Следующий вопрос
Смена конфигурации и сохранение состояния
Ещё по теме «Жизненный цикл Activity и Fragment»
- Порядок колбэков при переходе между Activity
- TransactionTooLargeException и Bundle
- Колбэки Activity
- Состояния Lifecycle
- Что переживает поворот и смерть процесса
- Жизненный цикл фрагмента и его view
- Гарантирован ли onDestroy
- Почему onPause должен быть быстрым