小编ilu*_*mer的帖子

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);
Run Code Online (Sandbox Code Playgroud)

publish(). autoConnect() output

Hot Observable Emit 0
Subscriber 1 : 0
Subscriber 2 : 0
....
Run Code Online (Sandbox Code Playgroud)

share() output

Hot Observable Emit 0
Subscriber 1 : 0
//the subscriber2 not receive event
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们不能share()在rx-java中使用多播?我找到了一个结论但不适合这种情况.

测试环境:oracle jdk1.8 …

rx-java

3
推荐指数
1
解决办法
1526
查看次数

标签 统计

rx-java ×1