Выбор ответа Senior Навигация обновлено

Predictive back и onBackPressed

Вопрос

Почему при поддержке predictive back нельзя полагаться на переопределение onBackPressed()?

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

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

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

Коротко

Правильный ответ: Система должна заранее знать, перехватят ли «Назад»: это задают OnBackPressedCallback или BackHandler. При predictive back анимация начинается, когда пользователь только начал жест, поэтому решение «кто обработает» должно быть известно заранее.

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

  1. Метод onBackPressed() удалён из Android 14, и переопределение просто не скомпилируется
  2. onBackPressed вызывается только на планшетах и складных устройствах с жестами
  3. Система должна заранее знать, перехватят ли «Назад»: это задают OnBackPressedCallback или BackHandlerправильный ответ
  4. onBackPressed выполняется на главном потоке во время анимации жеста и вызывает ANR

Разбор

При predictive back анимация начинается, когда пользователь только начал жест, поэтому решение «кто обработает» должно быть известно заранее. OnBackPressedDispatcher с колбэками, у которых isEnabled отражает состояние, и BackHandler/PredictiveBackHandler в Compose дают системе эту информацию. onBackPressed() объявлен устаревшим (deprecated), но не удалён, к планшетам и ANR это не относится.

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

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

Термины по теме