1
通常、私はそれが1回だけ実行され、観察可能なを作成するために RXサブ観測可能 - 実行は一度だけ
Observable observable = someObservable.replay().refCount();
を使用しています。私は、次のような
observable
複数回に加入する場合、これが正常に動作します:
observable.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(...);
observable.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(...);
observable
一度だけ実行される - 完璧な、私はそれをしたいだけのよう。今私が次のようにしている場合:
Observable obs1 = observable.map(...); // call some operators
Observable obs2 = observable.map(...); // call some operators
obs1.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(...);
obs2.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(...);
次に、observable
が2回実行されます。これが起こらないことをどうすれば確認できますか?
私は全体のシーケンスを再生したい...私は何かを失うことを望んでいない。私の観測項目から放出されるすべてのアイテムは、任意の加入者または任意のチェーンに放出する必要があります。観測可能なのは – prom85
で使用されています.cache()演算子を使用できます。このようにして、最初の実行は観測可能なものを作成し、他の加入者はまったく同じキャッシュされた放出を得る。 .cacheはあなたのための状態を維持するものと考えてください。 – FriendlyMikhail
これは動作しています。私はまだ混乱しています、なぜ 'refCount'が動作していないのですか...' refCount'のように思えるのは、結果のobservableを直接購読している場合だけです(私はそれについてはまだ読んでいません)... 'autoConnect'は代わりに動作します... – prom85