我正在尝试将对象列表从 ActivityTwo
发送到 MainActivity
我关注了EventBus的get started page并从 onStart 和 onStop 调用 register()
和 unregister()
方法,然后我使用 EventBus.getDefault().post()
发送数据。
在MainActivity
上,除非我从onStop()
中删除unregister()
调用,否则我什么也得不到。
我的问题是,我使用得正确吗?我应该在 onDestroy() 中调用 unregister() 吗?如果是这样,如果 Activity 停止后它不会拾取任何内容,为什么他们要从 onStop
调用它
主要 Activity
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(YoutubeData event) {
System.out.print(event);
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
Activity 二
private void sendYoutubeData() {
if(youtubeData != null){
EventBus.getDefault().post(youtubeData);
finish();
}
}
最佳答案
如果您想在 MainActivity 不可见时接收该事件,是的,您应该将 register()
和 unregister()
分别放在 onCreate 中()
和 onDestroy()
。
如果您的事件没有监听器,则永远不会收到该事件,除非它是粘性事件,在这种情况下您将能够在注册时收到它。有关粘性事件的更多信息 here
关于java - EventBus困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42722533/