Ставятся ли в очередь события в greenrobot Eventbus Android?

Я получаю данные от arduino из-за планшета Android через USB.

В моей основной деятельности у меня есть слушатель, который выполняет функцию, когда новые данные поступают на USB.

Проблема в том, что для выполнения функции требуется некоторое время, но как только поступают новые данные, эта функция снова запускается. Я постоянно передаю данные с USB со скоростью 115200 бит/с.

Чтобы решить эту проблему, я попытался использовать шину событий greenrobot. Новое событие будет опубликовано, когда поступят новые данные, и это событие будет подписано службой.

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


person Manav Singhal    schedule 01.05.2014    source источник


Ответы (1)


Проще говоря, процесс EventBus представляет собой улицу с односторонним движением: издатель публикует событие (сообщение), и все подписчики, зарегистрированные для этого типа события, получают уведомление.

Издатель даже не знает, на какие классы (если таковые имеются) подписаны — это знает только EventBus — не говоря уже о том, начал или закончил подписчик выполнение кода на основе триггера Event.

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

Если вам нужно поставить эти события в очередь, вам нужно будет справиться с этим самостоятельно. Начните с просмотра Arraydeque/ Семейство Deque.

person saywhatnow    schedule 26.05.2014