接続が確立された時点で現在の時刻をサーバーに送信しようとしています。私はすでに、この時間はネットワークの健全性に関するいくらかの遅延を持つかもしれないことを知っています。このため は、私は、このような何か(2)改修を使用してrxjava(1)、と私は再試行と再試行回数の間に多少の遅延を持っている:リトライ後の正しい現在時刻を送信するRxJavaおよびRetrofit
mRetrofit = new ApiClient().getObservableClient();
mService = mRetrofit.create(ApiObservableService.class);
mService.sendServerTimeNow(getCurrentTime())
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.retryWhen(«new RetryWithDelay(retries, delay))
.subscribe(new CustomSubscriber<ResponseBody>());
を私の問題は、再試行があるたびにありますgetCurrentTime()はリフレッシュされず、その値はサブスクリプション時に常に同じです。
E.g.
Retry 1 - 1482399029862
Retry 2 - 1482399029862 //here should be changed to the new current time
Retry 3 - 1482399029862 //here should be changed to the new current time
は私が再加入するだろうリトライ伐採があったが、これが本当であれば、現在の時刻をリフレッシュすると仮定されていませんか?
これはどのように私は、現在のこの時間の更新を行うことができ、私のgetCurrentTime()
public long getCurrentTime(){
return System.currentTimeMillis();
}
のですか?
また、私はすでに試みたが、成功しません:
Observable.just(getCurrentTime())
.flatMap(new Func1<Long, Observable<ResponseBody>>() {
@Override
public Observable<ResponseBody> call(Long aLong) {
mService.sendServerTimeNow(aLong)
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.retryWhen(«new RetryWithDelay(retries, delay))
.subscribe(new CustomSubscriber<ResponseBody>());
を値を計算するために
私はちょうどとfromCallableの違いを知っていませんでした、解説していただきありがとうございます。ありがとうございます! – iGoDa