如何在android中使用Roboguice将google guava eventbus作为全局单例注入?
我如何设置Roboguice,以便在注入我的活动和广播接收器时使用相同的eventbus实例,如下所示:如何在android中使用Roboguice将google guava eventbus作为全局单例注入?,android,roboguice,Android,Roboguice,我如何设置Roboguice,以便在注入我的活动和广播接收器时使用相同的eventbus实例,如下所示: @Inject EventBus eventBus; 也就是说: 据我所知,为了在我的活动中订阅广播接收器中发布的事件,事件总线必须是全局进程单例。然而,目前,我似乎正在为每次注入获取一个单独的事件总线 final EventBus bus = new EventBus(); 在您的模块中,以及 bind(EventBus.class).toInstance(bus); // or an
@Inject EventBus eventBus;
也就是说:
据我所知,为了在我的活动中订阅广播接收器中发布的事件,事件总线必须是全局进程单例。然而,目前,我似乎正在为每次注入获取一个单独的事件总线
final EventBus bus = new EventBus();
在您的模块中,以及
bind(EventBus.class).toInstance(bus); // or an otherwise exposed singleton
在它的configure方法中,应该可以做到这一点
据我所知,为了在我的活动中订阅广播接收器中发布的事件,事件总线必须是全局进程单例
不一定
只需在广播接收器拥有的事件总线中将活动注册为侦听器
可以有许多事件总线实例,每个实例代表一个单独的基于事件的通信通道
或者每个广播接收器可以有一个事件总线,甚至可以有几个活动同时订阅它发布的事件
就其本身而言,这里没有使用单例的要求,如果这种设计选择背后没有充分的理由,我实际上倾向于反对它。你的答案对我有用。然而,我很好奇,你关于多活动巴士的建议是如何运作的。活动如何从多个EventBus订阅事件?是否将多个EventBus注入活动?广播接收器如何指定要注入的事件总线?@TheLizardKing是的,我明白你的意思。您需要确保EventBus实例在侦听器或订阅者与事件海报广播接收器之间共享,以便在没有全局单例的情况下,仍然确保EventBus至少由两个对象共享,否则显然没有通信。好吧,你可以使用一个提供者。它可以自己注射。请参见以下答案,例如: