如何在android中使用Roboguice将google guava eventbus作为全局单例注入



我如何设置Roboguice使用eventbus的相同实例时注入到我的活动和广播接收器,像这样:

@Inject EventBus eventBus;

也就是说:据我所知,事件总线必须是全局进程单例,以便在我的活动中订阅Broadcast receiver中发布的事件。然而,目前,我似乎正在为每个注入获得一个单独的事件总线。

final EventBus bus = new EventBus();

bind(EventBus.class).toInstance(bus); // or an otherwise exposed singleton

在它的configure方法中应该可以做到这一点。

据我所知,事件总线必须是全局进程单例,以便在Broadcast receiver中发布的事件在我的活动中订阅

不一定。

只需在广播接收者拥有的事件总线中注册活动(作为侦听器)。

可以有许多事件总线实例,每个实例代表一个独立的基于事件的通信通道。

或者每个广播接收器可以有一个事件总线,甚至可以有几个活动同时订阅它发布的事件。

就其本身而言,这里没有使用单例的要求,如果这种设计选择背后没有很好的理由,我实际上倾向于反对它。

最新更新