private void apiPlace(){
if (isOnline(App.getContext())){
DiskCache.clearAll();
Observable.intervalRange(10, 5, 1, 2, TimeUnit.SECONDS)
.map(integer -> integer * 10-90)
.doOnSubscribe(disposable1 -> getViewState().showProgress())
.doFinally(() -> getViewState().hideProgress())
.subscribeOn(Schedulers.io())
.subscribe(integer -> {
ApiRequest.getPlace(integer)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(place -> {
getViewState().addMarkersOnMap(place);
DiskCache.savePlace(place);
});
},throwable -> {
Log.e("MainPresenter", throwable.getMessage() + "");
});
}else {
Observable.fromIterable(DiskCache.restorePlace())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe(disposable1 -> getViewState().showProgress())
.doFinally(() -> getViewState().hideProgress())
.subscribe(place -> {
getViewState().addMarkersOnMap(place);
},throwable -> {
Log.e("MainPresenter", throwable.getMessage() + "");
});
}
}
RxJava начал изучать недавно. Но в принципе понял как все работает. Вот только я смотрю на этот код и понимаю что он ужасен. Очень много чего повторяющегося.
Может ли кто - нибудь оптимизировать код, это поможет мне очень сильно понять как правильно писать в будущем. Да и людям кто начинает думаю тоже придется столкнутся с многопоточносью и кодом подобно этому.
В кратце делается проверка на офлайн и онлайн режим. Если онлайн то делаем 5 запросов в интернет и получаем данные и отправляем в View. Если оффлайн то вытаксиеваем из БД данные и отправляем в View
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
ЗдравствуйтеМеня интересует как можно решить проблему с отображением знаков вопроса вместо кириллических символов в JSON полученном Ajax-запросом