共有三个活动 A
,B
和C
在 Activity A 中注册,然后
EventBus
在 Activity AonCreate()
中注销onDestroy()
,以及一个方法onEvent(TestEvent e);
活动
A
开始活动B
活动
B
开始活动C
在活动中
C
:EventBus.getDefault().post(new TestEvent("close A"));
我用EventBus
这种方式,效果很好。我的代码有什么问题吗?
共有三个活动 A
,B
和C
在 Activity A 中注册,然后EventBus
在 Activity AonCreate()
中注销onDestroy()
,以及一个方法 onEvent(TestEvent e);
活动A
开始活动B
活动B
开始活动C
在活动中C
:
EventBus.getDefault().post(new TestEvent("close A"));
我用EventBus
这种方式,效果很好。我的代码有什么问题吗?
没关系。EventBus 是线程安全的,并且有很多方法可以使其更易于使用,例如 onEventMainThread、onEventBackgroundThread、onEventAsync。
您的代码的问题是:您的活动将继续获取事件,即使它在后台。没关系(在这种特殊情况下)。但是,如果您将来必须实现其他东西,请记住这一点:
还有其他一些事情:您必须绝对确保您的活动只注册一次。因为,如果您注册不止一次,您将收到与注册数量一样多的事件。因此,请像这样修改您的寄存器:
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
如果您需要更多详细信息,请在此处阅读有关 EventBus的更多信息。
但是,如果您遵循这些简单的规则,您的活动的生命周期。我经常使用它,我没有遇到问题。