RxJava棘手的startWith(可观察)

RxJava棘手的startWith(可观察),java,android,rx-java,reactive-programming,rx-java2,Java,Android,Rx Java,Reactive Programming,Rx Java2,以下代码仅在observable2完成后才从observable1发出项 observable1.startWith(observable2) .subscribe() 我需要实现另一种行为 observable1 -> 0 1 2 3 observable2 -> 1 2 3 4 5 6 observable1.startWithDefault(observable2) -> 1

以下代码仅在observable2完成后才从observable1发出项

observable1.startWith(observable2)
           .subscribe()
我需要实现另一种行为

observable1 ->       0   1   2   3
observable2 -> 1   2   3   4   5   6

observable1.startWithDefault(observable2)
            -> 1   2 0   1   2   3
第二个可观察对象仅发射项目,而第一个可观察对象为空,然后发射第一个可观察对象的项目

我无法找到只使用基本运算符的正确解决方案,自定义运算符startWithDefault的正确RxJava 2实现应该是什么样子

附言


由于存在竞争,无法正确解决从observable1立即发射的问题。

方向良好,但您需要
publish(Function)
共享
observable1
的信号,并且
concatEager
在开关出现时不会丢失其中的元素:

observable1.publish(o -> 
    Observable.concatEager(observable2.takeUntil(o), o)
)
.subscribe(...)
observable1.publish(o -> 
    Observable.concatEager(observable2.takeUntil(o), o)
)
.subscribe(...)