Я пытаюсь отправить серверу текущее время на момент установления соединения. Я уже знаю, что на этот раз может быть какая-то латентность, касающаяся здоровья сети. Для этого я использую переоснащения (2) и rxjava (1), и у меня есть некоторая задержка между повторами и число попыток, что-то вроде этого:Отправить правильное текущее время после повторной попытки RxJava и дооснащение
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>());
Моя проблема, каждый раз, когда повторная попытка является made, 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