【问题标题】:Global Event Manager Roboguice全球活动经理 Roboguice
【发布时间】:2014-12-23 07:53:10
【问题描述】:

我在我的 Android 应用程序中使用 RoboGuice 3.0.1 和 RoboBlender。 我想拥有一个全局事件管理器,并注意到 RG3.0 已经拥有它,如此处所述: https://github.com/roboguice/roboguice/issues/150

我已经添加了

bind(EventManager.class).annotatedWith(Names.named(DefaultRoboModule.GLOBAL_EVENT_MANAGER_NAME)).to(EventManager.class).asEagerSingleton();

到我在 configure() 中的自定义模块类。

我有一个执行 Web API 请求的单例 WebUtil.class。一旦 API 请求完成,我想利用全局事件管理器发送事件。 我已经使用以下方法注入了 eventManager:

@Inject EventManager eventManager;

使用以下方式发送事件:

eventManager.fire(new MyAPIEvent());

我的 Activity 类中有一个 Observer 方法:

handleAPICallback(@Observes MyAPIEvent apiEvent) {
// do something with apiEvent object
}

但我没有看到 handleAPICallback() 被调用。 我在网上搜索并找不到 GlobalEventManager 的单个示例。

任何帮助将不胜感激。

【问题讨论】:

  • 事件触发时你的Activity是否在前台?
  • 是的。活动在前台。
  • 如果您能提供 RG3.0 中全局事件管理器的示例,这对我们很多人来说真的很有帮助。

标签: android roboguice


【解决方案1】:

我通过在 RG 的 github 页面上发帖解决了这个问题。 链接在这里: https://github.com/roboguice/roboguice/issues/288#issuecomment-69770596

测试并验证它可以工作。

【讨论】:

  • 作为一个额外的评论,让我感到困惑的是,我有一个组件,事实上,它的 @Observes 方法注册到了全局事件管理器,而另一个没有。最终,事实证明它确实有效,但您必须将组件配置为 EAGER 单例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多