Я ищу ConnectableObservable или Subject, который при отсутствии подписчиков будет кэшировать значения и ждать их выдачи, пока не произойдет подписка. Но если подписчики есть, они не кэшируются, и новые подписчики не получат предыдущие события.
Спасибо, я думаю, что могу жить с Unicast или Dispatch для моего варианта использования, но почему нет многоадресной версии?
Что вы имеете в виду под многоадресной версией?
Несколько наблюдателей могут получать события одновременно, только буферизуют, когда нет наблюдателей.
MulticastWorkSubject
BehaviorSubject?
Не BehaviorSubject, потому что я не хочу, чтобы он кешировался, когда есть наблюдатель.
Нет компонента, который кэширует только тогда, когда нет потребителя, и в противном случае отправляет одни и те же элементы нескольким потребителям. Я предлагаю вам переосмыслить свой поток данных.
Поток данных, который я ищу, аналогичен оператору SingleLiveEvent LiveData, описанному в этом потоке github, хотя я бы хотел использовать вместо этого rxjava и хотел бы, чтобы при отсутствии наблюдателей кэшировалось более одного события. github.com/googlesamples/android-architecture-components/iss ues /…
@miguel ты когда-нибудь догадывался? Я столкнулся с той же проблемой
Я использую UnicastWorkSubject с некоторым успехом, хотя я сталкивался с сложными ситуациями жизненного цикла активности, когда я получаю IllegalStateException · Only one Observer allowed at a time, и его трудно отлаживать. Я также добился успеха с помощью LiveData SingleLiveEvent.
Взгляните на эти компоненты: github.com/akarnokd/RxJava2Extensions/blob/master/…