共有三个 Activity A
、B
和C
在 Activity A
onCreate()
中注册EventBus
,在onDestroy()
中注销,还有一个方法onEvent (TestEvent e);
Activity
A
启动 ActivityB
Activity
B
启动 ActivityC
在 Activity
C
中:EventBus.getDefault().post(new TestEvent("close A"));
我是这样使用EventBus
的,效果很好。我的代码有什么问题吗?
最佳答案
没关系。 EventBus 是线程安全的,并且有很多方法可以使其更易于使用,例如 onEventMainThread、onEventBackgroundThread、onEventAsync。
您的代码的问题是:您的 Activity 将继续获取事件,即使它在后台也是如此。没关系(在这种特殊情况下)。但是,如果您将来必须实现其他功能,请记住这一点:
- onCreate 注册 -> onDestroy 注销
- onStart 注册 -> onStop 注销
- onResume 注册 -> onPause 取消注册
还有一点:您必须绝对确保您的 Activity 仅注册一次。因为,如果您多次注册,您将收到与注册次数一样多的事件。因此,请像这样修改您的寄存器:
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
如果您需要更多详细信息,请阅读有关 EventBus 的更多信息 here .
但是,如果您遵循这些简单的规则,您的 Activity 的生命周期。我经常使用它,但没有遇到任何问题。
关于android - 我可以在 Activity 通信中使用 EventBus 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31510573/