RxJava 2が新しく、成功するまでCompletable
サーバーAPIコールを再試行し、再試行の通知を表示してUIに再試行ステータスを表示できるようにします。ユーザー。RxJava 2:再試行ユーザーの再試行通知を送信中に完了
このような何か:
public Observable<RetryAttempt> retryServerCall() {
// execute Completable serverCall()
// if an error is thrown, emit new RetryAttempt(++retryCount, error) to subscriber
// retry until serverCall() is successful
}
public Completable serverCall();
public class RetryAttempt {
public RetryAttempt(int retryCount, Throwable cause);
}
私はいくつかの異なるアプローチを試してみましたが、障害物に遭遇しました。最も近いのは、Observableを囲み、onNext()/ onComplete()/ onError()を明示的に呼び出すことです。
public Observable<RetryAttempt> retryServerCall() {
final int[] retryCount = {0};
return Observable.create(e ->
serverCall()
.doOnError(throwable -> e.onNext(new RequestHelp.RetryAttempt(++retryCount[0], throwable)))
.retry()
.subscribe(() -> e.onComplete(), throwable -> e.onError(throwable)));
}
おそらく、そのやや周辺の問題が、私はエラーvariable used in lambda should be final or effectively final
を避けるためにretryCount
ためfinal
配列を使用する必要がありました。
これを達成するには、Rxブードーを使用する方がよいことがわかっています。どんな指導も大歓迎です!
あなたは退会シグナリングを失うことになるとして、まさにこのようにそれを行うにはしたくありません。 –
@Tassos True私は 'subscribeWith'を使って内側の' Observable'に対して 'Disposable'を取得し、' setDisposable'で処分することができますか? – HolySamosa