Я получаю свой ответ из моего API с помощью rxjava со следующими функциями:
@Override
public Single<MyInfoResponse> getMyInfoApiCall() {
return Rx2AndroidNetworking.get(ApiEndPoint.ENDPOINT_MY_INFO)
.addHeaders(mApiHeader.getProtectedApiHeader())
.build()
.getObjectSingle(MyInfoResponse.class);
}
Теперь я извлекаю эти данные и использую их в своем коде пользовательского интерфейса (с обычными составными элементами) следующим образом:
@Override
public void onViewPrepared() {
getCompositeDisposable().add(getDataManager()
.getMyInfoApiCall()
.subscribeOn(getSchedulerProvider().io())
.observeOn(getSchedulerProvider().ui())
.subscribe(myInfoResponse -> {
getDataManager().updateMyManagerInfo(myInfoResponse);
if (myInfoResponse != null && myInfoResponse.getData() != null) {
getMvpView().updateMyRepo(myInfoResponse.getData());
}
}, throwable -> {
if (!isViewAttached()) {
return;
}
getMvpView().hideLoading();
// handle the error here
if (throwable instanceof ANError) {
ANError anError = (ANError) throwable;
handleApiError(anError);
}
}));
}
Теперь каждый раз, когда у меня есть подключение к Интернету, и он пытается получить данные, он работает нормально, но как только я теряю подключение к Интернету, я пытаюсь кэшировать эти данные, чтобы они по-прежнему отображались в пользовательском интерфейсе до тех пор, пока подключение к сети не будет восстановлено и готово. обновлять данные в режиме реального времени. Как мне сделать это самым простым и идеальным способом?