0

由于 android 平板电脑通过 USB 接收来自 arduino 的数据。

在我的主要活动中,我有一个监听器,它在新数据到达 USB 时执行一个函数。

问题是该函数需要一段时间才能执行,但是一旦新数据到达,该函数就会再次被触发。我不断地以 115200 bps 从 USB 传输数据。

为了解决这个问题,我尝试使用 greenrobot 事件总线。当新数据到达时将发布一个新事件,并且该事件将由服务订阅。

我怀疑事件是否排队等待最后一个事件完全执行。

4

1 回答 1

1

简单来说,该EventBus过程是单向的——发布者发布事件(消息),任何注册该事件类型的订阅者都会收到通知。

发布者甚至不知道订阅了哪些(如果有的话)类——只有 EventBus 知道这一点——更不用说订阅者是否已经开始或完成了基于Event触发器的代码执行。

我的建议是在 onEvent() 中检查的函数代码的开头放置一个标志(最后设置为 false),以检查是否调用该函数。

如果您需要对这些事件进行排队,则需要自己处理。首先看一下Arraydeque / Deque系列。

于 2014-05-26T03:55:44.113 回答