鉴于此:
TestSubscriber subscriber = new TestSubscriber();
ConnectableObservable<Integer> observable = Observable.just(1,2,3,4,5).publish();
observable.startWith(observable).subscribe(subscriber);
observable.connect();
订阅者在onNext中收到1,2,3,4,5但未收到onCompleted。
如果我将代码更改为:
Observable.just(1,2,3,4,5).replay()
然后订户收到onNext中的1,2,3,4,5,1,2,3,4,5然后onCompleted也是我所期望的。
对我而言,它在两种情况下都应该表现相同,因为所有订阅都是在第一个示例中调用.connect()之前发生的。
有人可以澄清为什么第一种情况表现不同吗?
答案 0 :(得分:1)
我认为您的问题与此相关 - observable.startWith(observable)
。它告诉observable在开始发出所有项目之前发出所有项目。
尝试删除该部分 -
TestSubscriber subscriber = new TestSubscriber();
ConnectableObservable<Integer> observable = Observable.just(1,2,3,4,5).publish();
observable.subscribe(subscriber);
observable.connect();