我正在我的应用程序中开发一些功能,我会收到推送通知,如果我的应用程序的某些屏幕正在运行,请在其中添加一些东西,比如更新一些列表、放置徽章和其他东西。
推送通知的使用是强制性的,我知道 websockets 或其他类似的解决方案更适合实现此功能,但由于后端限制我们不能使用它。
为了通知屏幕,我们认为可以使用像 Otto
或 Eventbus
这样的事件库。关键是我们只想在没有屏幕收到“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/