Требуется оптимизация RxJava кода

301
15 января 2018, 08:41
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

READ ALSO
Почему не умирает поток в java?

Почему не умирает поток в java?

Добрый деньРазбираю код из книжки (чат клиент)

267
Знаки вопроса вместо кириллицы в JSON

Знаки вопроса вместо кириллицы в JSON

ЗдравствуйтеМеня интересует как можно решить проблему с отображением знаков вопроса вместо кириллических символов в JSON полученном Ajax-запросом

272
NetworkOnMainThreadException rxjava

NetworkOnMainThreadException rxjava

Есть такой код

215