Android:与Greenrobot EventBus 2Activity之间如何通信?

Android: with Greenrobot EventBus how to communicate between 2 Activity?

我想在 2 Activity 之间进行交流。两者都是 register() 和 unregister() 方法:

@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 之间进行通信?

谢谢大家!

如您所知,您将无法使用 EventBus 在两个活动之间进行通信,因为您不能同时注册两个活动。

startActivityForResult 模式更适合您要实现的目标:http://developer.android.com/reference/android/app/Activity.html#StartingActivities

您实际上可以通过使用粘性事件来做到这一点。

http://greenrobot.org/eventbus/documentation/configuration/sticky-events/

基本上,您 post 在 Activity B 上使用 .postSticky() 粘性事件,当 Activity A 再次注册时,它将自动接收该粘性事件.

但如@jlhonora 的回答所述,startActivityForResult 可能更适合您的需要。