Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android EventBus没有为事件类注册订阅者_Java_Android - Fatal编程技术网

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