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

Почему onPause должен быть быстрым

Вопрос

Почему в onPause нельзя делать долгую работу, например запись большого файла?

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

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

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

Коротко

Правильный ответ: Следующая Activity не станет активной, пока onPause не завершится. Переход блокируется на onPause уходящей Activity: B не получит onResume, пока A не вернётся из onPause.

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

  1. onPause вызывается в фоновом потоке, и запись конфликтует с UI-потоком
  2. Следующая Activity не станет активной, пока onPause не завершитсяправильный ответ
  3. onPause может не вызваться совсем, если пользователь быстро свернёт экран
  4. В onPause запрещён доступ к файлам: хранилище уже отмонтировано

Разбор

Переход блокируется на onPause уходящей Activity: B не получит onResume, пока A не вернётся из onPause. Долгая работа делает переход заметно медленным. Колбэки вызываются на главном потоке, файлы доступны. Тяжёлое сохранение переносят в onStop или в фоновую работу (корутина, WorkManager).

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

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