【发布时间】:2014-09-15 02:24:20
【问题描述】:
我在 Android 应用中将 EventBus 模式替换为 RxJava。我有事件提醒任何感兴趣的各方更新我的缓存单例中的数据。任何时候调用 Web 服务,数据都会更新,并且订阅者会通过发布的事件收到警报。
我在 RxJava 中使用AsyncSubject 进行了类似的设置。观察者从主题中得到一个事件,然后他们得到一个onComplete 事件并取消订阅。这在 UI 第一次加载时起作用,但是当需要刷新数据时,不会通知订阅者。我如何告诉Subscribers 继续监听来自Subject 的更多onNext 事件?
我需要一个Subject 来报告最新项目。 PublishSubject 仅在订阅后发出项目,因此不太符合我的需求。我的订阅者在不同的时间开始观察(可能在第一个数据事件之后),所以我需要主题发出观察到的最后一个项目,然后为后续项目保持流打开。似乎我需要 AsyncSubject 和 PublishSubject 的组合。有没有办法通过内置类来实现这一点,还是我需要创建自己的主题?
WebServiceObservable OR CacheObservable
^
|
AsyncSubject
^
|
/ \
/ \
/ \
UiObserver1 UiObserver2
【问题讨论】: