Я заменяю шаблон EventBus
на RxJava
в приложении для Android. У меня были события, чтобы предупредить любые заинтересованные стороны об обновлениях данных в моем кеше singleton. Каждый раз, когда вызывается веб-служба, данные будут обновляться, и подписчики будут предупреждены через отправленное событие.
У меня есть что-то близкое к этой настройке в RxJava с помощью AsyncSubject
. Наблюдатели получают одно событие от субъекта, но затем получают событие onComplete
и отписываются. Это работает как первый пользовательский интерфейс, но когда данные необходимо обновить, подписчиков не будет уведомлять. Как сообщить этим Subscribers
продолжить прослушивание более onNext
событий из Subject
?
Мне нужен Subject
, который будет сообщать о последнем элементе. PublishSubject
только испускает элементы после подписки, поэтому он не совсем соответствует моим потребностям. Мои подписчики начинают наблюдать в разное время (возможно, после первого события данных), поэтому мне нужно, чтобы Subject излучал последний наблюдаемый элемент, а затем сохранил поток для последующих элементов. Кажется, что сочетание AsyncSubject и PublishSubject - это то, что мне нужно. Есть ли способ сделать это со встроенными классами, или мне нужно создать свой собственный вопрос?
WebServiceObservable OR CacheObservable
^
|
AsyncSubject
^
|
/ \
/ \
/ \
UiObserver1 UiObserver2