我想在2 Activity之间进行沟通。两者都是寄存器()和注销()方法:Android:与Greenrobot EventBus如何在2 Activity之间进行通信?
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
,当我在我的名单(项目选择)点击ActivityB开始。 ActivityB的目的是更新一些信息,并将这些新信息发送给ActivityA;所以在ActivityB我打电话:
EventBus.getDefault().post(new MyNewEvent(bla bla bla));
在我ActivityA我有这样的方法:
public void onEvent(MyNewEvent event) {
...
}
不幸的是这种方法的onEvent不会被调用。为什么?因为当ActivityB启动时,ActivityA中的onStop()方法被调用,所以总线注销完成...
那么如何在这种情况下使用EventBus在这两个Activity之间进行通信呢?
谢谢你们!
感谢您的解释。所以事件总线并不是真正的Android组件之间进行通信的ultime选择。 – anthony
这取决于。当我有很多非关键事件或与背景/异步任务进行通信时,我非常喜欢它。但是在进行活动间交流时,意向/结果是要走的路。 – jlhonora
如果我们不能使用EventBus在活动之间进行通信,那么只需编写简单的EventController来处理所有活动中的事件即碎片。根本不需要使用EventBus。创建EventController类。使用CopyOnWriteArrayList存储EventListener引用。只需在所有活动中实现EventListener接口。 EventListener接口将包含一个名为handleEvent()的单个方法。 –