2017-01-24 5 views

答えて

3

観測可能な/流動可能なものに複数のサブタブをサブスクライブすることができます。 subscribeコールを必要なだけ何度も繰り返してください。

Flowable<String> source = Flowable.just("Hello world"); 
source.subscribe(System.out::println); 
source.subscribe(System.out::println); 
... 

彼らは、このような複数のサブスクリプションを処理する方法でホット冷たい観測の違いがあります。

コールド observables/flowablesは、新規加入者ごとにソースからアイテムを再リクエストします。たとえば、Flowable.fromCallable(c)は、購読するたびにcを呼び出します。

ホット observables/flowablesは、すべてのサブスクライバと同じソースサブスクリプションを共有します。つまり、新しいサブスクライバごとにソースから新しいアイテムを要求しません。新しいアイテムは、現在登録されているすべてのサブスクライバに伝播します。

+0

なぜか分かりません。しかし、私はObservableにonClickをラップするとshare()演算子が必要です。そうしないと、1人の加入者だけがコールを受けることになります。 –

+0

@PhoenixWangそれはあなたのラップ方法によって異なります。コードを調べることなく伝えることはできません。ここに新しい質問として投稿してみてください。 –

+0

Thx。私はそれを把握すると思います。私はRxBindingと普通のラップを次のように作成しようとしました:Observable.create(e - > btn.setOnClickListener(v - > e.onNext( "")));彼らは同じように動作します。最後の加入者だけがコールを受信できます。私はObservableのソースコードを読んでいます。したがってObservableでは、subscribeActual()メソッドの実装のため、一度に1つのオブザーバだけがonNextコールを受け取ることができます。 –

関連する問題