RxJava2中ConnectableObservable的行为?

时间:2018-07-13 20:29:56

标签: java reactive-programming rx-java2

我正在使用event['eventName']发出一个且只有一个项目,并且永远不会完成。我想在不同时间与多个Observable myObs共享该项目。

Subscriber会将源转换为.replay(1)。因此,我应该能够“预加载”缓存并通过以下方式接收Disposable:

ConnectableObservable

完成此操作后(甚至在此之前),任何数量的ConnectableObservable myConnObs = myObs.replay(1); Disposable mainDisposable = myConnObs.connect(); 都可以使用

接收唯一商品
Subscriber

这些Disposable subDisp1 = myConnObs.subscribe(); Disposable subDisp2 = myConnObs.subscribe(); 中的每一个都应该能够通过配置Subscriber等来停止监听,对吗?但是这样做不会破坏subDisp1所保持的连接,对吗?无论“子订阅”的状态如何,处置它都应从mainDisposable取消订阅,对吗?如果处置了myObs,活动的Subscriber会怎样?他们是否收到错误通知或其他任何内容(记住mainDisposable从未表示已完成)?

1 个答案:

答案 0 :(得分:0)

正如@akarnokd所解释的,来来往往的观察者不会影响ConnectableObservable的连接。处置连接不会向那些观察者发出任何信号,通常建议您在处置可连接的连接之前先处置观察者的连接。通常可以通过将所有一次性物料托管在CompositeDisposable中并将其清除/处置来实现。