有三个活动ABC


在活动A EventBus中注册onCreate(),然后在onDestroy()和方法onEvent(TestEvent e);上注销
活动A启动活动B
活动B启动活动C
在活动C中:

EventBus.getDefault().post(new TestEvent("close A"));



我以这种方式使用EventBus,并且效果很好。我的代码有什么问题吗?

最佳答案

没关系。 EventBus是线程安全的,并且具有许多使它更易于使用的方法,例如onEventMainThread,onEventBackgroundThread,onEventAsync。

代码的作用是这样的:即使活动处于后台,您的活动也将继续获得事件。没关系(在这种情况下)。但是,如果将来您不得不实施其他操作,请记住以下几点:


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


还有其他事情:您必须绝对确保您的活动仅注册一次。因为,如果您多次注册,您将收到与注册数量一样多的事件。因此,请按以下方式修改您的注册信息:

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


如果您需要更多详细信息,请阅读有关EventBus here的更多信息。

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

关于android - 我可以在“Activity ”通信中使用EventBus吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31510573/

10-11 22:19
查看更多