Java android EventBus没有为事件类注册订阅者
在活动中,我这样做:Java android EventBus没有为事件类注册订阅者,java,android,Java,Android,在活动中,我这样做: onCreate(): 我要推翻这一点: @Override protected void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override protected void onStop() { EventBus.getDefault().unregister(this); super.onStop(); } 在我的服务中,我做到了: Global.
onCreate()
:
我要推翻这一点:
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
protected void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
在我的服务中,我做到了:
Global.getInstance().getGeoLocation().setBestLocation(loc);
EventBus.getDefault().post(new EventLocation(loc));
在logsd中,我看到:
10-27 09:15:04.367 5097-5097/komunal W/EventBus: Subscriber to unregister was not registered before: class komunal.activities.PGOListActivity
10-27 09:15:04.458 5097-5097/komunal D/EventBus: No subscribers registered for event class komunal.events.EventLocation
10-27 09:15:04.458 5097-5097/komunal D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
10-27 09:15:05.425 5097-5097/komunal D/EventBus: No subscribers registered for event class komunal.events.EventLocation
10-27 09:15:05.425 5097-5097 komunal D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
10-27 09:15:06.458 5097-5097/komunal D/EventBus: No subscribers registered for event class komunal.events.EventLocation
10-27 09:15:06.459 5097-5097/komunal D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
10-27 09:15:07.435 5097-5097/komunal D/EventBus: No subscribers registered for event class komunal.events.EventLocation
10-27 09:15:07.436 5097-5097/komunal D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
首先,您只需要注册订户一次。因此,如果您已经在
onCreate
中注册,请不要在onStart()
中再次注册它
第二,当您的活动不再可见时,您的活动将被取消订阅。这是因为您有以下几点:
@Override
protected void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
相反,您需要将注销移动到onDestroy()
:
最后,您需要在活动中使用以下内容订阅事件
:
// process the event in the Main thread.
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(EventLocation event) {
// do something with the event.
}
首先,您只需要注册订户一次。因此,如果您已经在
onCreate
中注册,请不要在onStart()
中再次注册它
第二,当您的活动不再可见时,您的活动将被取消订阅。这是因为您有以下几点:
@Override
protected void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
相反,您需要将注销移动到onDestroy()
:
最后,您需要在活动中使用以下内容订阅事件
:
// process the event in the Main thread.
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(EventLocation event) {
// do something with the event.
}
您的活动是否与服务在同一流程上?Eventbus无法跨不同进程工作。请共享
PGOListActivity
code。您的活动与服务在同一进程上吗?Eventbus无法跨不同的进程运行。请共享PGOListActivity
code。我这样做了,但对我没有帮助。你真的注册了活动吗?您可以使用EventBus.getDefault().isRegistered(this)进行检查代码>是,它一次工作,但当我的屏幕关闭,下一次打开时,我看到没有为Event注册订户您是否在onPause()
中注销EventBus?您只需要在onDestroy
中注销订阅服务器。我的答案有错,我会更新的。很抱歉。是的,我删除了暂停,并将取消注册放到DestoyedI。我这样做了,但对我没有帮助。你真的注册了活动吗?您可以使用EventBus.getDefault().isRegistered(this)进行检查代码>是,它一次工作,但当我的屏幕关闭,下一次打开时,我看到没有为Event注册订户您是否在onPause()
中注销EventBus?您只需要在onDestroy
中注销订阅服务器。我的答案有错,我会更新的。很抱歉。是的,我删除了onPause并将unregistry放到Destoyed