Выбор ответа Junior Жизненный цикл Activity и Fragment обновлено
Почему onPause должен быть быстрым
Вопрос
Почему в onPause нельзя делать долгую работу, например запись большого файла?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Следующая Activity не станет активной, пока onPause не завершится. Переход блокируется на onPause уходящей Activity: B не получит onResume, пока A не вернётся из onPause.
Варианты ответа
onPauseвызывается в фоновом потоке, и запись конфликтует с UI-потоком- Следующая Activity не станет активной, пока
onPauseне завершитсяправильный ответ onPauseможет не вызваться совсем, если пользователь быстро свернёт экран- В
onPauseзапрещён доступ к файлам: хранилище уже отмонтировано
Разбор
Переход блокируется на onPause уходящей Activity: B не получит onResume, пока A не вернётся из onPause. Долгая работа делает переход заметно медленным. Колбэки вызываются на главном потоке, файлы доступны. Тяжёлое сохранение переносят в onStop или в фоновую работу (корутина, WorkManager).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Жизненный цикл Activity и Fragment»
- Порядок колбэков при переходе между Activity
- TransactionTooLargeException и Bundle
- Колбэки Activity
- Состояния Lifecycle
- Что переживает поворот и смерть процесса
- Жизненный цикл фрагмента и его view
- Порядок колбэков Activity от запуска до закрытия
- Жизненный цикл фрагмента