あなたはそうです - Observable.share
はpublish().refCount()
のショートカットです。私はあなたが上に引用している説明はもう少しいConnectedObservable.refCount
として完全には明らかではないと思われる:)
あなたObservable
ConnectableObservable
に変換した場合 - 明示的ConnectableObservable.connect
呼ばれない限り、それは(何かが加入されている場合でも)のアイテムを放出しません - 基本的にsubscribe
メソッドの実行を延期し、すべてのサブスクライバに対して複数回実行することを防ぎます。このテクニックは、オブザーバブルがアイテムを発信し始める前に(つまり、誰もが購読した後にconnect()
メソッドが呼び出される前に)すべてのユーザが購読されていることを確認するためによく使用されます。
複数のユーザがいる場合(頻繁に起こることがあります)、自分の購読と購読解除を処理する必要があり、状況が面倒なものになります。このため、refCount()
が導入されました。この演算子は新しいObservableを返し、登録されているサブスクライバの数を追跡し、少なくとも1つのサブスクリプションが存在する限り接続を維持します。最初のサブスクライバが表示されたときにも自動的に接続されます。
PS。私が間違っている場合、RxJavaの使い方を学んでいます - それを指摘してください!
説明していただきありがとうございます。私はpublishとrefCountの意味を知っていましたが、なぜそれらを一緒に使用するのか理解できませんでした。 –
@WooguxWu 'publish'なしで' refCount'の動作を実現する他の方法がないので、これらは一緒に使用されます。 'publish()。refCount()'の後に得られるのは普通のObservableか、少なくともこれらの演算子を適用する前のObservableと同じではないということです。その動作はこれらの演算子の影響を受けます。 –
ええ、私はそれが異なっていなければならないことを知っています、私はちょうど異なっていることを知りたいです。 refCount()と似ていますか?しかし、共有する前に接続できない場合、refCountはどのように影響を与えますか? –