gpt4 book ai didi

android - GreenRobot EventBus 未在 Activity 发布的后台服务中接收消息

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:59 31 4
gpt4 key购买 nike

在我的 Activity 中,我发送 EventBus

@Override
protected void onResume() {
super.onResume();
EventBus.getDefault().post(new String("We are the champions"));
}

在我的后台服务中,我注册了 EventBus 并尝试像这样从 Activity 获取发送的消息

@Override
public void onCreate() {
super.onCreate();
EventBus.getDefault().register(this);
}

@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}

public void onEventBackgroundThread(String s){
Log.d(TAG, "onEventBackgroundThread: " + s);
}

但是没有任何反应。我试图搜索互联网但无法得到答案。

我得到的错误

No subscribers registered for event class java.lang.String
No subscribers registered for event class de.greenrobot.event.NoSubscriberEvent

1.编辑

我已经有了从服务到 Activity 的 EventBus 通信。但现在我想让它也反向工作(从 Activity 到服务)。那么会不会有冲突呢?

最佳答案

首先你需要定义一个自定义消息事件类:

public class MyMessageEvent {
String s;
}

然后你应该在你的服务中添加一个订阅者方法。关键是将您的 MyMessageEvent 作为参数包含在内:

public void onEventBackgroundThread(MyMeasageEvent  myEvent){
Log.d(TAG, "onEventBackgroundThread: " + myEvent.s);
}

另外确保您的服务注册到 EventBus

最后,在您的 Activity 中创建一个 MyMessageEvent 并将其发布到事件总线上:

MyMessageEvent myEvent = new MyMessageEvent() ;
myEvent.s = "hello" ;

EventBus.getDefault().post(myEvent) ;

如果仍然没有收到,请尝试将帖子从 get default 拆分到单独的一行。有时链接不起作用。

关于android - GreenRobot EventBus 未在 Activity 发布的后台服务中接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27497836/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com