0
私は、次の要件がありますRetrofit + RxJava - エラー時にキャッシュ/パブリッシュして再試行しますか?
- 複数のオブザーバー(フラグメント)は、データ・ソースに加入する必要があります。
- アクティビティがネットワーク要求を開始します。要求が成功すると、各オブザーバは結果を受け取ります。
キャッシュ/パブリッシュ演算子を使用して実行しようとしましたが、最初のリクエストでエラーが返される問題があります。この時点で私はストリームをリセットしたいし、その後メソッドを呼び出すたびにエラーを返すのではなく、新しいネットワーク要求を実行する必要があります。
ここに私が現在持っているものがあります。
private Flowable<List<Data>> dataObservable;
private Flowable<List<Data>> getData(){
if(dataObservable == null){
dataObservable = apiService.getData()
.doOnError(throwable -> {
dataObservable = null;
})
.cache();
}
return dataObservable;
}
これは機能しますが、コードは間違っています。より良い方法が必要です。
問題は、retry()演算子が私からの入力なしで無限に再試行を続けるということです。 –
さまざまな引数を取る 'retry()'演算子がいくつかあります。これは良い紹介です:http://blog.danlew.net/2016/01/25/rxjavas-repeatwhen-and-retrywhen-explained/ –