簡體   English   中英

知道對象是否訂閱了EventBus或Otto庫中的事件

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

我正在開發我的應用程序中的一些功能,該功能會收到推送通知,並且如果我的應用程序的某些屏幕正在運行,則會在其中添加一些內容,例如更新一些列表,添加徽章等。

必須使用推送通知,我知道websockets或其他類似的解決方案更適合完成此功能,但由於后端限制,我們無法使用它。

為了通知屏幕,我們認為使用了OttoEventbus類的事件庫。要點是,我們只想在沒有屏幕接收到“消息”的情況下顯示通知。 為了解決此問題,我們首先將“ ACK”事件發送回通知接收者,以通知它必須不顯示通知。

為了做到這一點,(這是我的問題)這個庫之一中是否有某種形式可以知道某個對象是否已訂閱了具體的事件?

有可能,盡管您無法直接獲得訂閱者。

玫瑰油

如果您訂閱DeadEvent ,則每次有任何訂閱者的事件時都會收到它:

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

EventBus

這里使用的事件是NoSubscriberEvent

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM