Articles of rx android

Архитектура Android-приложений – RxJava

Я работаю над андроидным приложением (в основном, пытаюсь разобраться с использованием RxJava / Android). Это мои требования: Ведение постоянного и глобального состояния для зарегистрированного пользователя Всякий раз, когда изменяется состояние пользователя, соответственно обновляется представление. Я использую экземпляр User Singleton для поддержания глобального состояния и SharedPreferences для сохранения. Теперь я пытаюсь использовать RxAndroid для уведомления изменений […]

InterruptedIOException при переключении с mainThread () на io ()

У меня есть код, который сначала должен запускаться на AndroidSchedulers.mainThread() , затем должен выполнить HTTP-запрос, поэтому он должен запускаться на Schedulers.io() и обрабатывать результат в пользовательском интерфейсе, поэтому вернемся к AndroidSchedulers.mainThread() , Я получаю InterruptedIOException при переключении с AndroidSchedulers.mainThread() на Scheulers.io() . Вот какой код: Model model = getModel(); Completable.fromAction( new Action0() { public void […]

Как получить одноразовый объект для подписчиков в RxJava2

Это может быть глупый вопрос, но как я могу получить Disposable при подписке на объект наблюдения в RxJava 2.0? Например: observable.subscribeWith( behaviorSubject) Не возвращает Disposable ? Как отменить такую ​​подписку? Или еще один пример с CompositeDisposable : compositeDisposable.add( observable.subscribeWith( behaviorSubject) ) ) Это не компилируется, потому что subscribeWith( behaviorSubject ) не возвращает одноразовый. Как отказаться […]

Как использовать Rx для управления несколькими наблюдателями, чтобы сохранить только одно открытое соединение с сервисом?

В моем приложении некоторые действия получают информацию с сервера, и мне нужно убедиться, что соединение уже установлено, прежде чем пытаться извлечь данные. Я использую BehaviorSubject для уведомления подписчиков, когда соединение установлено, поэтому Activity может загружать данные. Проблема в том, что более одного действия в одном потоке имеют одинаковое поведение. В нашем API мы должны вызвать […]

Получите объект JSON один за другим из массива JSON на Android с помощью Retrofit и RxJava

Я использую retrofit, чтобы попасть в мою сеть api, которая возвращает массив json. Я делаю это, используя следующий код- Observable<MyJson[]> response = (Observable<MyJson[]>)mNetworkService.getReadyObserverable(mNetworkService.getNetworkServiceApi().getMyDataJsons(), MyJson.class, true, useCache); mAirlineSubscription = response.subscribe(new Observer<MyJson[]>() { @Override public void onCompleted() { Log.d(TAG, "getData completed.."); } @Override public void onError(Throwable e) { Log.e(TAG, "onError: " + e.getLocalizedMessage()); } @Override public void […]

Как воссоздать или перезагрузить кэшированный Observable, используемый с Retrofit для получения новых данных?

У меня есть: API, который возвращает список данных в JSON . Моя цель: Получите эти данные через Retrofit + RxJava . Моя проблема: Мне нужен только один сетевой запрос, и я не хочу запускать новый, если экран был повернут до его завершения. Также мне нужна возможность обновлять данные из API. Как я его решаю: Сначала […]

Как получить последнее значение от BehaviorSubject?

Как получить последнее значение из BehaviorSubject на RxAndroid ? Некоторая справочная информация: я использую RxJava для реализации шаблона MVVM. My ViewModel инкапсулирует «связуемые свойства», которые являются BehaviorSubject s. Я привязываю их к элементам пользовательского интерфейса как наблюдаемым, гарантируя, что интерфейс постоянно обновляется (и благодаря использованию BehaviorSubject это произойдет, даже если подписка состоится после установки значения). […]

Объединение наблюдаемого и модифицированного RxTextView

В качестве примера для начала работы с RxAndroid я пытаюсь реализовать поисковый запрос, который запускает вызов для отдыха, когда пользователи что-то вставляют. Пока у меня две рабочие части. Первое наблюдение EditTextView … RxTextView.textChangeEvents(searchEditText) .debounce(400, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<TextViewTextChangeEvent>() { @Override public void onCompleted() { Timber.d("onCompleted"); } @Override public void onError(Throwable e) { Timber.e(e, "onError"); } […]

RxAndroid & Retrofit Лучший подход для обработки ошибок

У меня есть некоторые сомнения в отношении подхода, который я пытаюсь реализовать в приложении для Android. Сервисы приложения могут отправлять код ошибки http, когда пользователь потерял сеанс или он истек. Поскольку я новичок в RxAndroid, я сомневаюсь в том, как реализовать общий способ обработки с помощью общего наблюдаемого. Вызов сервера может выполняться либо в классе […]

Java.lang.NoClassDefFoundError: io.reactivex.Observable

Когда я использую Observable в моем обновленном API на телефоне с API 21, я получил эту ошибку: java.lang.NoClassDefFoundError: io.reactivex.Observable Но по телефону с API 19 или эмулятором с API 23 он работает. Это мой интерфейс API: import io.reactivex.Observable; import retrofit2.Response; import retrofit2.http.Body; import retrofit2.http.POST; public interface ApiService { /** * Created by Mohsen on 5/10/2017. […]