Выбор ответа Senior Навигация обновлено
Predictive back и onBackPressed
Вопрос
Почему при поддержке predictive back нельзя полагаться на переопределение onBackPressed()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Система должна заранее знать, перехватят ли «Назад»: это задают OnBackPressedCallback или BackHandler. При predictive back анимация начинается, когда пользователь только начал жест, поэтому решение «кто обработает» должно быть известно заранее.
Варианты ответа
- Метод
onBackPressed()удалён из Android 14, и переопределение просто не скомпилируется onBackPressedвызывается только на планшетах и складных устройствах с жестами- Система должна заранее знать, перехватят ли «Назад»: это задают
OnBackPressedCallbackилиBackHandlerправильный ответ onBackPressedвыполняется на главном потоке во время анимации жеста и вызывает ANR
Разбор
При predictive back анимация начинается, когда пользователь только начал жест, поэтому решение «кто обработает» должно быть известно заранее. OnBackPressedDispatcher с колбэками, у которых isEnabled отражает состояние, и BackHandler/PredictiveBackHandler в Compose дают системе эту информацию. onBackPressed() объявлен устаревшим (deprecated), но не удалён, к планшетам и ANR это не относится.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.