【问题标题】:Know if an Object is subcribed to an event in EventBus or Otto library知道一个对象是否订阅了事件总线或 Otto 库中的事件
【发布时间】:2015-10-21 00:15:07
【问题描述】:

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

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

为了通知屏幕,我们认为使用OttoEventbus 之类的事件库。关键是我们只想在没有屏幕收到“消息”时才显示通知。为了解决这个问题,我们首先通过向通知接收者发送回一个“ACK”事件来通知它不能显示通知。

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

【问题讨论】:

标签: android event-bus otto


【解决方案1】:

这是可能的,虽然你不能直接获得订阅者。

奥托

如果您订阅了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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多