我如何设置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中发布的事件在我的活动中订阅
不一定。
只需在广播接收者拥有的事件总线中注册活动(作为侦听器)。
可以有许多事件总线实例,每个实例代表一个独立的基于事件的通信通道。
或者每个广播接收器可以有一个事件总线,甚至可以有几个活动同时订阅它发布的事件。
就其本身而言,这里没有使用单例的要求,如果这种设计选择背后没有很好的理由,我实际上倾向于反对它。