我正在使用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
从未表示已完成)?
答案 0 :(得分:0)
正如@akarnokd所解释的,来来往往的观察者不会影响ConnectableObservable的连接。处置连接不会向那些观察者发出任何信号,通常建议您在处置可连接的连接之前先处置观察者的连接。通常可以通过将所有一次性物料托管在CompositeDisposable中并将其清除/处置来实现。