首页 > 解决方案 > 同一类的多个实例从事件总线获取相同的事件

问题描述

我正在使用 greenroot eventbus 在我的应用程序的两个组件之间以异步方式传递事件有效负载,使用@Subscribe注释来订阅事件。问题是,如果具有@Subscribe注释的类的多个实例注册到事件总线,它们都接收相同的事件有效负载并且计算是多次完成的。(正如我创建的许多实例一样。)

有没有办法让事件总线只向我的类的单个实例提供事件有效负载,即

如果我的订阅方法如下所示:

public class A {

 A() {
   eventBus.register(this);
 }

 @Subscribe
public void consumeEvent(String s) {
   // do something
}

}

如果我创建 5 个 A 类实例,并将 5 个字符串传递给事件总线,则所有订阅的实例都应该得到 1 个实例。

由于多个对象,有没有办法可以避免这种冗余计算?

标签: javaevent-busgreenrobot-eventbus-3.0

解决方案


推荐阅读