未收到Greenrobot EventBus活动

Ali*_*lin 5 android greenrobot-eventbus

我正在使用Greenrobot EventBus将事件从一个活动传递到另一个活动.

流程如下:Activity1启动 - >扫描条形码 - > Activity2启动 - >接受或拒绝响应并向Activity1发送事件.

所以Activity2通过执行以下操作向Activity1发送一个新事件:

@Override
public void onCreate(){
  EventBus.getDefault().register(this);
  // other initialization code
  EventBus.getDefault().post(new MyEvent());
}
Run Code Online (Sandbox Code Playgroud)

在Activity1中,我注册了事件总线,并且我还有公共的onEvent(MyEvent myEvent)方法来接收事件.

问题是onEvent没有被触发.我看到可能在事件总线对象上有问题(比如活动1和2中的不同实例或某些实例),但它是同一个实例.

我不知道这似乎是什么问题.如果有人可以看一看并告诉我我做错了什么,我会非常感激.

谢谢!

小智 8

在这种情况下,您可能需要使用粘性事件.在Activity1启动Activity2之后,它会进入后台,并且无法再接收任何事件.

把它放在Activity1而不是EventBus.getDefault().register(Object Event)

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().registerSticky(this);
}
Run Code Online (Sandbox Code Playgroud)

并替换

EventBus.getDefault().post(new MyEvent());
Run Code Online (Sandbox Code Playgroud)

在Activity2中

EventBus.getDefault().postSticky(new MyEvent());
Run Code Online (Sandbox Code Playgroud)

这是解释它的文档的链接