Как я могу избежать получения двух разных событий в одну и ту же миллисекунду?

В моем приложении у меня есть две кнопки, которые отправляют событие с идентификатором, используя шину событий (Отто). В зависимости от этого идентификатора приложение переходит на другой уровень навигации между разными фрагментами. Можно ли избежать того, чтобы шина событий отправляла одно и то же событие (с разными идентификаторами) в одну и ту же миллисекунду, когда пользователь нажимал две разные кнопки в одну и ту же миллисекунду? Я прикрепляю изображение, чтобы показать мой Logcat.

Спасибо!

введите здесь описание изображения

РЕДАКТИРОВАТЬ 1:

Используя синхронизированный метод onClick в качестве метода подписки, я продолжаю получать события в ту же миллисекунду. Теперь миф о «синхронизации» развеялся для меня. О_о

Есть посты, где объясняют, как избежать очень быстрых кликов, но здесь клики происходят в те же миллисекунды... редко, но можно посмотреть логи.

Я прилагаю новые изображения с помощью метода, который я использую. Спасибо! введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения


person juanjo    schedule 26.09.2015    source источник
comment
Дубликат stackoverflow.com/questions/16534369 /   -  person GreyBeardedGeek    schedule 26.09.2015
comment
Вы заметили, что проблема в том, что пользователь нажимает две кнопки в одну и ту же миллисекунду?   -  person juanjo    schedule 26.09.2015


Ответы (1)


Да, используйте ключевое слово synchronized с методом, который генерирует события (или также с методом, который получает события).

Например:

public synchronized void genEvent(){

}

См. следующие связанные ссылки

https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

Когда использовать синхронизацию в Java

Есть ли преимущество использовать синхронизированный метод вместо синхронизированного блока?

person Community    schedule 26.09.2015