1

我最近通过切换到 eventbus 更改了我的应用程序,以减少对应用程序其他部分的依赖。现在我看到一个奇怪的问题,我不知道它是否是绿色机器人事件总线的错误或预期功能。

假设我有一个事件 A 和事件 B,那么事件 B 扩展了 A,因为 A 是 A 类型的通用事件。我的助手类订阅了事件 A 和 B,我看到的是它触发 B,然后触发 A。除了检查它是否是通用订阅侦听器中的 instanceof 之外,有没有办法在保持我的多态性的同时防止这种情况发生?如果需要在多个类中处理,我将 A 事件用作类型的广播。

谢谢

4

1 回答 1

0

我知道这是一篇旧文章,但您可以通过如下设置事件总线来做到这一点:

 EventBus EVENT_BUS = new EventBus().builder().eventInheritance(false).installDefaultEventBus();

这里的关键是eventInheritance(Boolean)方法。我也遇到过同样的问题,当我以这种方式构建总线实例时,只有您订阅的事件才会触发。因此,如果您触发事件 B,则只会触发事件 B 订阅者,而不触发事件 A。

于 2017-04-07T08:36:18.543 回答