我可以在活动沟通中使用EventBus吗?

时间:2015-07-20 07:08:54

标签: android greenrobot-eventbus

有三项活动ABC

  1. 在活动A EventBus注册onCreate(),在onDestroy()注册,方法onEvent(TestEvent e);

  2. 活动A启动活动B

  3. 活动B启动活动C

  4. 在活动C中:

    EventBus.getDefault().post(new TestEvent("close A"));
    
  5. 我以这种方式使用EventBus,效果很好。我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

没关系。 EventBus是线程安全的,有很多方法可以使它更容易使用,比如onEventMainThread,onEventBackgroundThread,onEventAsync。

您的代码就是:您的活动即使在后台也会继续获取活动。这没关系(在这种特殊情况下)。但是,如果您将来必须实施其他内容,请牢记这一点:

  • onCreate register - > onDestroy取消注册
  • onStart register - > onStop取消注册
  • onResume register - > onPause取消注册

还有别的东西:你必须绝对确保你的活动只注册了ONCE。因为,如果您注册多次,您将收到与寄存器数量一样多的事件。因此,请修改您的注册表:

if (!EventBus.getDefault().isRegistered(this)) {
    EventBus.getDefault().register(this);
}

如果您需要更多详情,请详细了解EventBus here

但是,如果您遵循这些简单的规则,那么您的活动的生命周期。我经常使用它,我没有遇到问题。