私はAndroidのRxJavaでリポジトリパターンのようなものを実現するためのより良い方法を見つけようとしています。ここでRxJavaでリポジトリパターンを実装する
は、私がこれまで持っているものだ。それはネットワーク要求を作ってあげるいない場合は、保存されたキャッシュされたデータがあるかどう基本的にはチェック
public Subscription getData(Observer<Data> observer, boolean refresh) {
Subscription sub = null;
Data cached = getCachedData();
if(cached != null) {
observer.onNext(cached);
if(refresh) {
sub = requestNetwork().subscribe(observer);
} else {
observer.onCompleted();
}
} else {
sub = requestNetwork().subscribe(observer);
}
return sub;
}
を(hereからいくつかのコードを取りました)。また、それは常にネットワーク要求を行うrefresh
ブールパラメータ強制している。
この関数の呼び出し元は、Observable
の代わりにSubscription
を受け取る必要があります。これはもはやチェーンできません。
ファンクションをObservable
に戻す方法はありますか?まだリポジトリパターンがありますか?
ああ、私一度http://blog.danlew.net/2015/06/22/loading-data-from-multiple-sources-with-rxjava/ – akarnokd
を参照してください。その記事を開きましたが、それを使用しなかったのは、サブスクライバーが述部に一致する最初のソースから取得しただけの「first」を使用したためです。 'refresh'パラメータを利用して' first'演算子を呼び出すには** not **を選択できます。ありがとう! –