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