如何在Android中使用Roboguice注入谷歌番石榴事件总线作为全球单身人士?

时间:2014-05-07 14:15:51

标签: android roboguice

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

@Inject EventBus eventBus;

也就是说: 据我所知,事件总线必须是全局进程单例,以便在我的活动中订阅广播接收器中发布的事件。然而,目前,我似乎每次注射都会获得一个单独的事件总线。

1 个答案:

答案 0 :(得分:0)

final EventBus bus = new EventBus();

在您的模块中,

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

在其configure方法中应该可以解决问题。

  

据我了解,事件总线必须是全局流程单例,以便在我的活动中订阅广播接收器中发布的事件

不一定。

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

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

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

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