2015-09-11 8 views
10

x個の排出量をキャッシュすることができるが、指定された時間間隔(たとえば1分)後に有効期限が切れるcache()演算子があるかどうか疑問に思っていました。私は次のようなものを探していました...RxJava- cache()はreplay()と同じですか?

これは1つのアイテムをキャッシュしますが、1分後にキャッシュを期限切れにしてクリアします。

私はいくつかの調査を行い、replayオペレータを見つけました。この必要性を満たすように思えましたが、いくつか質問があります。なぜそれは熱く、接続する必要がありますか?これはcache()演算子とは異なるのですか?私はcache()がサブジェクトを模倣していることを知っていますが、接続する必要はありません。

答えて

22

cacheおよびreplayは、さまざまな用途に使用されます。キャッシュは自動接続リプレイです。長期的なリプレイのために一般的に使用されるすべてのコンテナです。リプレイはより多くのパラメータを持つことができ、有限の時間/サイズのリプレイを行うことができますが、開始するタイミングを指定する必要があります。 autoConnect()演算子を使用すると、そのようなConnectableObservableインスタンスをサブスクライバがサブスクライブするとソースに接続するプレーンObservableに変換できます。この方法で、あなたは有界と自動接続リプレイは(1.0.14+ RxJavaが必要です)を持つことができます。

source.replay(1, TimeUnit.SECONDS).autoConnect().subscribe(...); 
+0

おそらくautoconnect'が –

+2

実験的であることは、今の標準APIになる可能性が高いです '言及する必要があります。https: //github.com/ReactiveX/RxJava/pull/3391 – akarnokd

関連する問題