Rx java 在RxJava中是否存在一个观察者会被一些观察者共享的情况?

Rx java 在RxJava中是否存在一个观察者会被一些观察者共享的情况?,rx-java,Rx Java,我认为将一个观察者实例与一些观察者共享是错误的。 比如说 Observable o1 = Observable.interval(1, TimeUnit.MILLISECOND); Observable o2 = Observable.interval(1, TimeUnit.MILLISECOND); Observer observer = new Observer() { ... } o1.subscribe(observer); o2.subscribe(observer); 由于观

我认为将一个观察者实例与一些观察者共享是错误的。 比如说

Observable o1 = Observable.interval(1, TimeUnit.MILLISECOND);
Observable o2 = Observable.interval(1, TimeUnit.MILLISECOND);

Observer observer = new Observer() { ... }

o1.subscribe(observer);
o2.subscribe(observer);
由于观察者的onCompleted()有时会被调用,因此它可能是不可接受的

但我找不到任何有关这方面的文件。
因此,我想知道是否有任何情况可以将一个观察者共享给某些观察者。

通过设计,一旦您订阅了观察者,就会创建观察者,然后一旦您的项目被发送,您的观察者就会取消订阅并删除它

您可以避免使用Observables和Relay,因为它不会提供onComplete回调,所以在完成时不会取消订阅Observables

    /**
 * ReplayRelay it works just like hot observables, once that an observer subscribe, the Relay will replay all items already emitted
 * to another observer.
 * it should return 1,2,3,4,5 for both observers.
 */
@Test
public void testReplaytRelaySharingObserver() {
    ReplayRelay<String> relay = ReplayRelay.create();
    Subscription subscription = relay.subscribe(result -> System.out.println("Observer1:" + result));
    relay.call("1");
    relay.call("2");
    relay.call("3");
    relay.subscribe((Observer<? super String>) subscription);
    relay.call("4");
    relay.call("5");
}
/**
*ReplayRelay它的工作原理与热观测一样,一旦观测者订阅,中继将重放所有已发出的项目
*给另一个观察者。
*它应该为两个观察员返回1,2,3,4,5。
*/
@试验
public void TestReplayRelayShareingObserver(){
ReplayRelay继电器=ReplayRelay.create();
Subscription-Subscription=relay.subscripte(结果->系统.out.println(“Observer1:+result”);
中继呼叫(“1”);
中继呼叫(“2”);
中继呼叫(“3”);

订阅((ObserverThank)谢谢你的信息!现在,我可以确定这一点。我将检查RxRelay。它太有趣了!