0

这是这篇文章的后续内容 如何使用 GreenRobot 的 EventBus 将事件从 Service 广播到 Activity?

我的用例围绕服务和活动展开。

Service 用于跟踪 BLE 连接的变化。

Activity 用于向 UI 报告该连接状态。

现有场景。服务使用广播发送围绕 BLE 的每个状态的事件(通过 sendBroadcast() 方法)(连接/断开连接、数据可用等)

我的疑问:我可以像广播一样使用这个 GreenRobot 的 EventBus 库来控制(发送和接收事件)吗?如果是这样,在完全替换广播控制(发送和接收)范例的同时,有什么我应该考虑(关于线程安全)或必须知道的。

4

1 回答 1

3

我目前正在使用 Otto(与 EventBus 非常相似)来完成您想要做的事情。

我有一个服务,它拥有一个计时器,并显示一个持久的通知。通知的每次更新也会发布最新的信息,供 Activity 接收,然后更新 UI。

使用 Otto(可能还有 EventBus,我没有使用过那个特定的库)实现起来要容易得多,因为我每次发布一些信息时都需要发送 4 条信息,而且每次都为意图添加额外内容变得很烦人常规的 sendBroadcast() 系统。

切换到 Otto 后我没有遇到任何问题,它帮助我清理了很多代码。

需要注意的一件事(至少使用 Otto)是默认设置为仅允许在主线程上发布/订阅,并且当您使用服务时,您必须对其进行编辑。我不确定 EventBus 是否具有相同的功能,但请在他们的文档中查找。

于 2015-10-15T15:02:25.713 回答