Я борюсь с «синхронизацией» двух слушателей для двух объектов, которые зависят друг от друга.Android. Синхронизация слушателей для зависимых объектов
Предположим, у нас есть ListView list
и прокручиваемый LinearLayout slider
. Оба находятся в макете в пределах Fragment
.
Когда я прокручиваю список до какого-либо элемента, ползунок должен autoscroll
, чтобы показать соответствующую позицию. Когда я прокручиваю ползунок, тогда список должен быть smoothScrollToPosition
и показать соответствующую позицию.
Таким образом, у меня
interface SliderListener {
public onPositionChanged();
}
и
interface ListViewListener {
public onListPositionChanged();
}
Если я просто реализовать эти два метода в общем контроллере (я реализовать их в контроллере Fragment
), то будет тупиковым (они бесконечно пытаются прокручивать друг друга и генерировать все больше и больше событий).
Я попытался использовать некоторую простую переменную буфера семафора и проверить ее состояние перед выполнением действий, но это все равно приводит к параллелизму.
Что такое правильный способ синхронизации использования слушателей?
'synchronized' для предотвращения работы от перехвата во время выполнения в случае работы с несколько потоков. –