事件在事件总线中存在多长时间?
How long does an event live in the eventbus?
我想 @Subscribe 一个由 ScheduledFuture 创建的 Runnable 中的方法,这样我就可以从另一个线程向它发出是否要 运行 的信号。因为 ScheduledFuture 在将来的某个时间创建对象,所以 @Subscribe 侦听器没有范围来接收我的事件。所以,我想知道一个事件在公共汽车上等待多长时间,等待听众接听?实际的 pub-sub 同步是 sending/receiving 事件还是它们会在超时前在队列中等待一段时间?
谢谢。
Guava 的EventBus
不提供粘性事件。此外,由于 EventBus
的设计,扩展它以实现这种粘性设计并不像它可能那么简单,因为许多内部结构都是包私有的(例如,发现哪些方法的逻辑注册的对象用 Subscribe
注释并将它们映射到正确的事件类型。
我确实认为有一些其他库确实提供了此功能,例如 GreenRobot 的事件总线 (https://github.com/greenrobot/EventBus),但如果不引入新库,您将不得不或多或少地从头开始构建它.
我使用的替代方案是 RxJava 的 Observables
和 replay(1)
运算符,这样订阅可观察对象将始终立即调用最后一项的订阅回调,但这不是直接替换。
我想 @Subscribe 一个由 ScheduledFuture 创建的 Runnable 中的方法,这样我就可以从另一个线程向它发出是否要 运行 的信号。因为 ScheduledFuture 在将来的某个时间创建对象,所以 @Subscribe 侦听器没有范围来接收我的事件。所以,我想知道一个事件在公共汽车上等待多长时间,等待听众接听?实际的 pub-sub 同步是 sending/receiving 事件还是它们会在超时前在队列中等待一段时间?
谢谢。
Guava 的EventBus
不提供粘性事件。此外,由于 EventBus
的设计,扩展它以实现这种粘性设计并不像它可能那么简单,因为许多内部结构都是包私有的(例如,发现哪些方法的逻辑注册的对象用 Subscribe
注释并将它们映射到正确的事件类型。
我确实认为有一些其他库确实提供了此功能,例如 GreenRobot 的事件总线 (https://github.com/greenrobot/EventBus),但如果不引入新库,您将不得不或多或少地从头开始构建它.
我使用的替代方案是 RxJava 的 Observables
和 replay(1)
运算符,这样订阅可观察对象将始终立即调用最后一项的订阅回调,但这不是直接替换。