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)