有三个活动A
,B
和C
在活动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/