订阅事件和多态性发生两次

时间:2016-04-14 01:18:10

标签: java android greenrobot-eventbus greenrobot-eventbus-3.0

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

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

由于

1 个答案:

答案 0 :(得分:0)

我知道这是一个旧帖子,但您可以通过设置这样的事件总线来实现:

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

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