由于 android 平板电脑通过 USB 接收来自 arduino 的数据。
在我的主要活动中,我有一个监听器,它在新数据到达 USB 时执行一个函数。
问题是该函数需要一段时间才能执行,但是一旦新数据到达,该函数就会再次被触发。我不断地以 115200 bps 从 USB 传输数据。
为了解决这个问题,我尝试使用 greenrobot 事件总线。当新数据到达时将发布一个新事件,并且该事件将由服务订阅。
我怀疑事件是否排队等待最后一个事件完全执行。
由于 android 平板电脑通过 USB 接收来自 arduino 的数据。
在我的主要活动中,我有一个监听器,它在新数据到达 USB 时执行一个函数。
问题是该函数需要一段时间才能执行,但是一旦新数据到达,该函数就会再次被触发。我不断地以 115200 bps 从 USB 传输数据。
为了解决这个问题,我尝试使用 greenrobot 事件总线。当新数据到达时将发布一个新事件,并且该事件将由服务订阅。
我怀疑事件是否排队等待最后一个事件完全执行。
简单来说,该EventBus
过程是单向的——发布者发布事件(消息),任何注册该事件类型的订阅者都会收到通知。
发布者甚至不知道订阅了哪些(如果有的话)类——只有 EventBus 知道这一点——更不用说订阅者是否已经开始或完成了基于Event
触发器的代码执行。
我的建议是在 onEvent() 中检查的函数代码的开头放置一个标志(最后设置为 false),以检查是否调用该函数。
如果您需要对这些事件进行排队,则需要自己处理。首先看一下Arraydeque / Deque系列。