2
根據我view.I點認爲share()
是publish().autoConnect()
。但同樣在這段代碼的結果是不一樣的share()和publish()。autoConnect()之間有什麼區別?
Observable<Integer> cold = Observable.create(subscriber -> {
for (int i = 0; i <= 2; i++) {
System.out.println("Hot Observable Emit " + i);
subscriber.onNext(i);
}
});
ConnectableObservable<Integer> connectble = cold.publish().autoConnect(2);
//Obserable(Integer) connectavle = cold.share();
connectble.subscribe(subscriber1);
connectble.subscribe(subscriber2);
的publish(). autoConnect() output
Hot Observable Emit 0
Subscriber 1 : 0
Subscriber 2 : 0
....
的share() output
Hot Observable Emit 0
Subscriber 1 : 0
//the subscriber2 not receive event
在這種情況下,我們不能使用share()
在rx-jav中進行多播一個?我找到conclusion但不適合這種情況。
測試環境:預言jdk1.8 RX-java的1.2 IDEA的ubuntu
所以'share'可以用於'Multicasting'。在這種情況下,爲什麼我們需要'share'和'publish()。RefCount()'。我是RxJava的初學者。 – ilumer
如果由於某種原因用戶數量變爲1 - 0 - 1,您可以同時使用多播,但'share'可以重新訂閱源。 – akarnokd
但是從我的代碼,爲什麼subscriber2無法接收event.if'share'可以用於'Multicasting',subscriber2應該接收事件。 – ilumer