Потратив некоторое время, я думаю, что это работает достаточно хорошо для моих нужд. Он не очень хорошо обернут в тему или в Observable, но все, что мне было нужно, это отправлять предметы и подписываться.
class RxEventSender<T> {
private val bufferedEvents = arrayListOf<T>()
private val publishSubject = PublishSubject.create<T>()
val observable: Observable<T> = publishSubject
.mergeWith(Observable.fromIterable(bufferedEvents))
.doOnDispose {
bufferedEvents.clear()
}
fun send(event: T) {
if (publishSubject.hasObservers()) {
publishSubject.onNext(event)
} else {
bufferedEvents.add(event)
}
}
}