0 / 0 / 0
Регистрация: 14.05.2018
Сообщений: 1
1

RxJava: последовательность запросов с изменением статусов на UI

14.05.2018, 12:38. Показов 883. Ответов 0

Author24 — интернет-сервис помощи студентам
Всем привет =)

При запуске приложения, открывается активити, состоящая из progressbar для отображения статуса загрузки и textview, в котором, в котором отображается конкретный шаг, который выполняется в текущий момент.

Цель данного активити, получать некоторые данные с сервера (актуальность версии, обновленные настройки, информация о пользователе и т.п.). Все работает в связке retrofit + rxjava.

По факту, для каждого запроса есть свой Observable. Все они должны выполняться по очереди (через flatMap или zip).

Проблема в том, что я не могу обновлять статусы отработки методов в textview, после каждого выполненного\невыполненного запроса, так как не имею доступа к mainThread.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
_view.setStatusMessageText("Проверка наличия подключения");
 
Observable.just(appId)
                .flatMap(app -> {
                    if (!NetworkHelper.hasConnection(ApplicationCore.getAppContext()))
                        throw new RuntimeException(ApplicationCore.getAppContext().getString(R.string.error_no_connections));
 
                    if (!NetworkHelper.isHostAvailable(BuildConfig.apiServerIP, BuildConfig.apiServerPort, BuildConfig.TIMEOUT))
                        throw new RuntimeException(ApplicationCore.getAppContext().getString(R.string.error_service_not_available));
 
                    return Observable.just(app);
                })
/* 
как-то так: _view.setStatusMessageText("Получаем актуальную версию");   */
                .flatMap(app -> getApplicationVersions(appId))
/* _view.setStatusMessageText("Получаем список модулей");   */
                .flatMap(app -> getApplicationModules(appId))
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(apps -> {
                           /* any action */
                        },
                        throwable -> {
                            _view.showError(ExceptionHelper.tryParseException(throwable, TAG, 4));
                            _view.hideLoading();
                        });
Подскажите, как обновлять UI между выполненными запросами (Observable)?

Добавлено через 47 минут
Извиняюсь, тупанул...

нужно переключаться между потоками observeOn:


Java
1
2
3
4
.observeOn(AndroidSchedulers.mainThread())
                .doOnNext(app -> _view.setStatusMessageText("Получаем список модулей"))
                .observeOn(Schedulers.io())
                .flatMap(app -> getApplicationModules(appId))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2018, 12:38
Ответы с готовыми решениями:

Цепь запросов rxjava + retrofit
Мне нужно сделать 2 разных запроса через retrofit. Один на авторизацию а второй на получение...

Последовательность выполнения запросов
Люди добрые подскажите, существует база *.MDB, допустим есть процедура, в которой последовательно...

Последовательность выполнения запросов
Здравствуйте. Использую SQL CE. Есть 2 таблицы: CREATE TABLE ( INT NOT NULL IDENTITY...

Последовательность ajax запросов
Здравствуйте, уважаемые гуру! Столкнулся с интересной головоломкой - создания цепочки...

0
14.05.2018, 12:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2018, 12:38
Помогаю со студенческими работами здесь

Последовательность выполнения запросов
Приветствую Подскажите пожалуйста Есть два запроса, оба на добавление данных запускаемых одной...

Последовательность запросов через phpMyAdmin
Здравствуйте, форумчане. Подскажите пожалуйста, можно ли выполнить через phpMyAdmin тоже самое,...

Изменение статусов в Todo
Всем привет! Отправляю письмо-задачу адресату. Программно определяю статус задачи в зависимости от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru