如何取消自己发送的EventBus事件的订阅?

时间:2015-07-01 11:07:00

标签: android event-bus greenrobot-eventbus

我为 EventBus 事件注册了2个正在运行的课程 - 实例 A 和实例 B 。他们都实施了onEvent(SampleEvent event)方法,用于从 C 的地方接收EventBus.post(new SampleEvent(int foo, String bar));。到目前为止一切都很好。

但有一段时间我需要将SampleEvent 从B发布到A 。是否可以告诉 B 它不应该处理自己发送的SampleEvent,或者我需要像SampleEvent中设置标记一样解决方法?

1 个答案:

答案 0 :(得分:1)

您可以尝试为SampleEventToA扩展SampleEvent,而不是使用反射在B中检查:

if  (! event instanceof SampleEventA){
    //do things here
}

在otto EventBus上发现此问题:来自super事件的派生事件也将调用超级事件的订阅者。这可能是OO解决方案!

https://github.com/square/otto/issues/83