Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使用Roboguice将google guava eventbus作为全局单例注入?_Android_Roboguice - Fatal编程技术网

如何在android中使用Roboguice将google guava 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

我如何设置Roboguice,以便在注入我的活动和广播接收器时使用相同的eventbus实例,如下所示:

@Inject EventBus eventBus;
也就是说: 据我所知,为了在我的活动中订阅广播接收器中发布的事件,事件总线必须是全局进程单例。然而,目前,我似乎正在为每次注入获取一个单独的事件总线

final EventBus bus = new EventBus();
在您的模块中,以及

bind(EventBus.class).toInstance(bus); // or an otherwise exposed singleton
在它的configure方法中,应该可以做到这一点

据我所知,为了在我的活动中订阅广播接收器中发布的事件,事件总线必须是全局进程单例

不一定

只需在广播接收器拥有的事件总线中将活动注册为侦听器

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

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


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

你的答案对我有用。然而,我很好奇,你关于多活动巴士的建议是如何运作的。活动如何从多个EventBus订阅事件?是否将多个EventBus注入活动?广播接收器如何指定要注入的事件总线?@TheLizardKing是的,我明白你的意思。您需要确保EventBus实例在侦听器或订阅者与事件海报广播接收器之间共享,以便在没有全局单例的情况下,仍然确保EventBus至少由两个对象共享,否则显然没有通信。好吧,你可以使用一个提供者。它可以自己注射。请参见以下答案,例如: