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

Двойной клик открывает экран дважды

Вопрос

Пользователь быстро дважды нажал на элемент, и экран деталей открылся два раза. Как это исправить средствами Navigation?

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

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

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

Коротко

Правильный ответ: launchSingleTop = true в опциях navigate или проверка текущего экрана. launchSingleTop = true не добавляет новую копию, если то же назначение уже наверху стека.

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

  1. Увеличить длительность анимации перехода, чтобы второй клик попал в анимацию
  2. Вызывать navigate в фоновом потоке, чтобы клики обрабатывались по очереди
  3. Обернуть navigate в synchronized, чтобы два вызова не шли одновременно
  4. launchSingleTop = true в опциях navigate или проверка текущего экранаправильный ответ

Разбор

launchSingleTop = true не добавляет новую копию, если то же назначение уже наверху стека. Дополнительно можно игнорировать клики, пока идёт переход (проверка currentBackStackEntry или состояния жизненного цикла RESUMED). Анимация, фоновый поток и synchronized проблему не решат (вызовы и так последовательны на главном потоке), а navigate вызывается на главном потоке.

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

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

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