服务(事件总线订阅者)未从 Activity 接收 post
Service (event bus subscriber) not receiving post from Activity
NotificationEvent Class (POJO)
public class NotificationEvent {
LoggedInUserInterface liui;
public NotificationEvent(LoggedInUserInterface liui) {
this.liui = liui;
}
}
MyFirebaseMessagingService(订阅者)
LoggedInUserInterface liui;
@Override
public void onCreate() {
super.onCreate();
EventBus.getDefault().register(this);
}
@Override
public void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onMessageEvent(NotificationEvent notificationEvent) {
LoggedInUserInterface liui = notificationEvent.liui;
this.liui = liui;
Log.d("notifyUser", "EventBus call received in service");
}
我的Activity(海报)
EventBus.getDefault().postSticky(new NotificationEvent(this));
Log.d("notifyUser", "Activity post call done");
错误
EventBus: No subscribers registered for event class com.myCompany.myApp.NotificationEvent
No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
成功登录
Activity post call done
登录不成功
EventBus call received in service
我试过粘性和非粘性都无济于事。感谢帮助
更新
我可以确认事件总线正常工作,真正的问题是:服务仅在收到通知时运行。这是一个问题,因为每次创建 activity 时服务都需要来自主 activity 的更新字符串,而不是仅在收到通知时才需要。
可能的 Hacky 解决方案
我可以在每次应用程序启动时向自己发送通知(而不显示)。这将启动服务并允许事件总线更新字符串。这并不理想,并且会在您预算时吃掉我的 firebase 工资。因此,仍然非常感谢本地解决方案。
1st,记录一下 firebase 服务的创建,以确保它真的启动了。
第二,如果 green 作为 otto 工作,你需要在同一个进程中拥有服务 运行,否则它们将不会共享允许你在它们之间发送 post 消息的资源(线程、内存堆栈) .
最后,意图可能是 better/more 从活动到服务进行通信的可靠方式。
您可以尝试关闭 Thread =Main
Srrbice 不应该在主线程
上 运行
NotificationEvent Class (POJO)
public class NotificationEvent {
LoggedInUserInterface liui;
public NotificationEvent(LoggedInUserInterface liui) {
this.liui = liui;
}
}
MyFirebaseMessagingService(订阅者)
LoggedInUserInterface liui;
@Override
public void onCreate() {
super.onCreate();
EventBus.getDefault().register(this);
}
@Override
public void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onMessageEvent(NotificationEvent notificationEvent) {
LoggedInUserInterface liui = notificationEvent.liui;
this.liui = liui;
Log.d("notifyUser", "EventBus call received in service");
}
我的Activity(海报)
EventBus.getDefault().postSticky(new NotificationEvent(this));
Log.d("notifyUser", "Activity post call done");
错误
EventBus: No subscribers registered for event class com.myCompany.myApp.NotificationEvent
No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
成功登录
Activity post call done
登录不成功
EventBus call received in service
我试过粘性和非粘性都无济于事。感谢帮助
更新
我可以确认事件总线正常工作,真正的问题是:服务仅在收到通知时运行。这是一个问题,因为每次创建 activity 时服务都需要来自主 activity 的更新字符串,而不是仅在收到通知时才需要。
可能的 Hacky 解决方案
我可以在每次应用程序启动时向自己发送通知(而不显示)。这将启动服务并允许事件总线更新字符串。这并不理想,并且会在您预算时吃掉我的 firebase 工资。因此,仍然非常感谢本地解决方案。
1st,记录一下 firebase 服务的创建,以确保它真的启动了。 第二,如果 green 作为 otto 工作,你需要在同一个进程中拥有服务 运行,否则它们将不会共享允许你在它们之间发送 post 消息的资源(线程、内存堆栈) .
最后,意图可能是 better/more 从活动到服务进行通信的可靠方式。
您可以尝试关闭 Thread =Main Srrbice 不应该在主线程
上 运行