Выбор ответа Junior Навигация обновлено
Двойной клик открывает экран дважды
Вопрос
Пользователь быстро дважды нажал на элемент, и экран деталей открылся два раза. Как это исправить средствами Navigation?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: launchSingleTop = true в опциях navigate или проверка текущего экрана. launchSingleTop = true не добавляет новую копию, если то же назначение уже наверху стека.
Варианты ответа
- Увеличить длительность анимации перехода, чтобы второй клик попал в анимацию
- Вызывать
navigateв фоновом потоке, чтобы клики обрабатывались по очереди - Обернуть
navigateвsynchronized, чтобы два вызова не шли одновременно launchSingleTop = trueв опцияхnavigateили проверка текущего экранаправильный ответ
Разбор
launchSingleTop = true не добавляет новую копию, если то же назначение уже наверху стека. Дополнительно можно игнорировать клики, пока идёт переход (проверка currentBackStackEntry или состояния жизненного цикла RESUMED). Анимация, фоновый поток и synchronized проблему не решат (вызовы и так последовательны на главном потоке), а navigate вызывается на главном потоке.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.