【问题标题】:How to cancel subscription of EventBus events sent by itself?如何取消订阅自己发送的EventBus事件?
【发布时间】:2015-07-01 11:06:59
【问题描述】:

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

但有时我需要将SampleEvent 从 B 发布到 A。是否可以告诉B它不应该处理自己发送的SampleEvent,或者我需要做一些解决方法,比如在SampleEvent 中设置一个标志?

【问题讨论】:

  • 为什么在从 B 向 A 发送事​​件时不使用单独的事件?
  • @PeterP 这也是一种方式。问题是这将是完全相同的事件,具有相同的变量,只是名称不同。如果我的想法无法实现,我会直接走这条路。 ;)

标签: android event-bus greenrobot-eventbus


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,我没想到的好主意。但不完全是我正在寻找的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 2017-02-12
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 2018-01-05
相关资源
最近更新 更多