了解对象是否订阅了事件总线或 Otto 库中的事件

Know if an Object is subcribed to an event in EventBus or Otto library

我正在我的应用程序中开发一些功能,我会收到推送通知,如果我的应用程序的某些屏幕是 运行,请在其中添加一些内容,例如更新某些列表、放置徽章和其他内容。

强制使用推送通知,我知道 websockets 或其他类似的解决方案更适合实现此功能,但由于后端限制我们无法使用它。

为了通知屏幕,我们认为使用 OttoEventbus 等事件库。关键是我们只想在没有屏幕收到 "the message" 时显示通知。为了解决这个问题,我们首先通过向通知接收者发回一个 "ACK" 事件来通知它不能显示通知。

为了不这样做,(这是我的问题)在这个库之一中是否有某种形式来知道某个对象是否订阅了具体事件?

这是可能的,尽管您无法直接获得订阅者。

奥托

如果您订阅了 DeadEvent,您将在每次没有任何订阅者的活动时收到它:

@Subscribe
public void deadEvent(DeadEvent deadEvent) {
    if (deadEvent.event instanceof MyConcreteEvent) {
        // handle the concrete event
    }
}

事件总线

这里使用的事件是NoSubscriberEvent:

public void onEvent(NoSubscriberEvent event) {
    if (event.originalEvent instanceof MyConcreteEvent) {
        // handle the concrete event
    }
}