我想@Subscribe一个由ScheduledFuture创建的Runnable中的方法,以便我可以从另一个线程发信号通知是否运行。由于ScheduledFuture将来会创建对象,因此@Subscribe侦听器无法接收我的事件。所以,我想知道一个事件在公交车上待了多久,等待听众接听?是实际的pub-sub同步wrt发送/接收事件还是他们会在超时前进入队列一段时间?
感谢。
答案 0 :(得分:3)
Guava' EventBus
不提供粘性事件。另外,由于EventBus
的设计,它并不像扩展它以实现这样一个粘性设计那么简单,因为许多内部都是包私有的(例如,逻辑到发现注册对象上的哪些方法使用Subscribe
注释并将它们映射到正确的事件类型。)
我确实认为还有一些其他的库可以提供这样的功能,比如GreenRobot的事件总线(https://github.com/greenrobot/EventBus),但是如果没有引入新的库,你必须构建它更多或者从头开始。
我使用的替代方案是RxJava的Observables
和replay(1)
运算符,因此订阅observable将始终立即调用最后一项的订阅回调,但它不是替代品。