powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / RxJava: последовательность запросов с изменением статусов UI
2 сообщений из 2, страница 1 из 1
RxJava: последовательность запросов с изменением статусов UI
    #39644313
inSAne_GHoST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет =)

При запуске приложения, открывается активити, состоящая из 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.
_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)?
...
Рейтинг: 0 / 0
RxJava: последовательность запросов с изменением статусов UI
    #39644333
inSAne_GHoST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, тупанул...

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

Код: java
1.
2.
3.
4.
.observeOn(AndroidSchedulers.mainThread())
                .doOnNext(app -> _view.setStatusMessageText("Получаем список модулей"))
                .observeOn(Schedulers.io())
                .flatMap(app -> getApplicationModules(appId))
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / RxJava: последовательность запросов с изменением статусов UI
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]