Rx java 一个订户的多个观测值

Rx java 一个订户的多个观测值,rx-java,Rx Java,我需要使用来自多个源的事件。源的数量各不相同,一个源可能会被添加或删除 由于我希望能够“动态”更改源集,而无需重新订阅,merge 我试过类似的东西 PublishSubject<Integer> sourcesSubject = PublishSubject.create(); sourcesSubject.subscribe(...); Observable<Integer> source1 = ...; source1.subscribe(sourcesSubj

我需要使用来自多个源的事件。源的数量各不相同,一个源可能会被添加或删除

由于我希望能够“动态”更改源集,而无需重新订阅,
merge

我试过类似的东西

PublishSubject<Integer> sourcesSubject = PublishSubject.create();

sourcesSubject.subscribe(...);

Observable<Integer> source1 = ...;
source1.subscribe(sourcesSubject); // add first source

Observable<Integer> source2 = ...;
source2.subscribe(sourcesSubject); // add second source

..... // How to remove a source?
PublishSubject sourcesObject=PublishSubject.create();
sourcesObject.subscribe(…);
可观测源1=。。。;
source1.订阅(sourcesObject);//添加第一个源
可观测源2=。。。;
source2.订阅(sourcesObject);//添加第二个源
..... // 如何删除源?
但不知道如何删除源


有一个简单的解决方案吗?

找到了删除源代码的最简单方法:

Observable<Integer> source = ...;
Subscription subscription = source.subscribe(sourcesSubject); // add source
subscription.unsubscribe(); // remove source
可观测源=。。。;
订阅订阅=源。订阅(SourcesObject);//添加源
订阅。取消订阅();//删除源

找到了删除源代码的最简单方法:

Observable<Integer> source = ...;
Subscription subscription = source.subscribe(sourcesSubject); // add source
subscription.unsubscribe(); // remove source
可观测源=。。。;
订阅订阅=源。订阅(SourcesObject);//添加源
订阅。取消订阅();//删除源

我建议考虑组合操作符,如
merge
(和实例变量
mergeWith
)或
concat
concatWith
),这样就不需要使用
Subject
。当您取消订阅时,所有源代码都将停止。

我建议查看组合运算符,如
merge
(和实例变量
mergeWith
)或
concat
concatWith
),这样就不需要使用
Subject
。当您取消订阅时,所有来源都将停止。

这听起来像是XY问题。你想要这个的原因是什么?闻起来像是XY问题。你想要这个的原因是什么?