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

标签 android event-bus otto

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

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

为了通知屏幕,我们认为可以使用像 OttoEventbus 这样的事件库。关键是我们只想在没有屏幕收到“the信息”。为了解决这个问题,我们首先通过向通知接收者发送回一个“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
    }
}

关于android - 了解对象是否订阅了事件总线或 Otto 库中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248915/

相关文章:

android - 如何在 android 中使用 ssid 和密码创建自定义 WPA 热点?

java - Android 取消选中单选按钮

java - Gwt 2.4 中 EventBus 和 Gin 的问题

java - RuntimeException:无法分派(dispatch)事件@otto

android - 在 ViewPager 中使用 Otto 时数据混合

android - 如何显示带有图标和名称的复选框列表(android)

android - 如何以编程方式启动android手机?

java - 如何找出方法被执行?

java - Guava EventBus 延迟嵌套事件的处理程序执行

android - Android 上 Fragment 之间的通信