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

但是有时我需要将SampleEvent从B发布到A。是否可以告诉B它不应该处理自己发送的SampleEvent,还是需要做一些变通方法,例如在?

最佳答案

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

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


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

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

10-06 03:40