dependencies {
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
}
CompositeDisposable disposable = new CompositeDisposable();
disposable.add(myApi.getDataWithFlowable(_url)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) //Schedulers.newThread() | AndroidSchedulers.mainThread()
.retryWhen(new RetryWithExponentialDelay(retryCount))
.subscribe(resp -> {
// 성공 처리
}, throwable -> {
// 지수 백오프 요청이 완전히 실패했을 때 처리
throwable.printStackTrace();
}));
myApi.getDataWithFlowable(_url)
은 Flowable
을 반환하는 Retrofit
인스턴스
new RetryWithExponentialDelay(retryCount)
의 retryCount
는 내가 최대로 수행하고 싶은 재시도 횟수.
재시도 횟수를 거듭 할수록 2의 n승 단위로 대기 시간이 길어지기 때문에 적정한 retryCount
정의 필요.