Articles of rx android

Понимание потоков данных и нескольких подписчиков (с использованием модификации)

Скажем, у меня есть 2 Observables (A & B), которые по сути являются сетевыми вызовами (с использованием Retrofit для предоставления контекста). Текущий поток приложения выглядит следующим образом: A & B запускается примерно в одно и то же время (асинхронно). B выполняется 0 или более раз при взаимодействии с пользователем У меня есть 3 разных сценария, […]

Android / RxJava Как связать сетевые запросы и повторить попытку

Я пытаюсь связать сетевые запросы с помощью RxJava в Android, а затем повторить попытку, когда он не работает. Я смотрел StackOverflow на то, как это сделать, не попадая в адский черт Callback, который поставляется с использованием Vanilla Android и Retrofit в одиночку. Я могу сделать все это в процедуре, в такой асинхронной задаче (ниже шаги, […]

Зачем нужна функция onBackpressure () здесь для событий click?

Я пытаюсь сделать обработку ошибок для некоторых действий, связанных с нажатием кнопки. Для привязки я использую RxAndroid + RxAndroid. Похоже, что он должен работать с кодом ниже, но он не имеет комментариев с помощью onBackpressure() : CurrentUser signIn() { throw new RuntimeException(); } Integer x = 1; PublishSubject<Throwable> loginingFailedSubject = PublishSubject.create(); @Override public void onStart() […]

Как я могу заставить этот rxjava zip работать параллельно?

У меня есть метод сна для моделирования продолжительного процесса. private void sleep() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } Затем у меня есть метод, возвращающий Observable, содержащий список из двух строк, заданных в параметрах. Он вызывает сон перед возвратом строк назад. private Observable<List<String>> getStrings(final String str1, final String str2) { […]

Использование RxJava для запроса цепочки в одном потоке

Я сохраняю местоположение пользователя в локальной базе данных приложения, а затем отправляю его на сервер. Как только сервер вернется к успеху, я удалю отправленное местоположение. Каждый раз, когда точка была сохранена в базе данных, я вызываю этот метод: public void sendPoint(){ amazonRetrofit.postAmazonPoints(databaseHelper.getPoints()) .map(listIdsSent -> deleteDatabasePoints(listIdsSent)) .doOnCompleted(() -> emitStoreChange(finalEvent)) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.from(backgroundLooper)) .subscribe(); } Я запрашиваю базу […]

Запись синхронных unittests для Rx v2 Flowable

Я конвертирую свой проект из Rx v1 в Rx v2, и сейчас я в процессе изменения некоторых из v1 Observable s для v2 Flowable s. (Его в Android-проекте с unittests, написанным в Groovy с помощью Spock) Обычно я просто переопределял Планировщиков, используя крючок. Я все еще могу сделать это в v2, зарегистрировав обработчики планировщика. Это […]

Отмена нескольких подписчиков сразу в RxAndroid – Android

Я использую Retrofit с RxAndroid для обработки нескольких запросов в одном действии, Таким образом, у меня есть пара переменных подписки в активности как общедоступная, public Subscription sub1; public Subscription sub2; public Subscription sub3; public Subscription sub4; public Subscription sub5; Теперь в onStop активности я хочу отменить их всех (если они не закончили). Есть ли способ, […]

Как прекратить наблюдение?

У меня есть Observable, который я хочу завершить, если определенное условие не выполняется (то есть, если ответ с определенного сайта не увенчался успехом), чтобы я мог повторно запросить веб-сайт и снова вызвать наблюдаемый. Как мне это сделать? Вот что я хочу сделать: Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { //Perform network […]

Фильтр RxAndroid Наблюдаемый <Список <Элемент >>

Я использую RxAndroid, и я хотел бы фильтровать результат Observable<List<Item>> . Вот код: Observable<List<Item>> observable = Observable.create((Observable.OnSubscribe<List<Item>>) subscriber -> { subscriber.onNext(ItemManager.getItems()); subscriber.onCompleted(); }); Я хотел бы использовать .filter() только для получения действительных элементов. Это было бы прекрасно: observable.filter(new Func1<Item, Boolean>() { @Override public Boolean call(Item item) { return item.isValid(); } }); Однако .filter() заставляет меня […]

Связь между фрагментами с использованием rxjava

У меня есть активность с фрагментом. Внутри этого фрагмента есть viewpager и внутри, что есть список. Теперь, когда пользователь нажимает на элемент в списке, фрагмент должен быть заменен другим фрагментом, и мне нужно передать некоторые данные, такие как позиция списка и некоторые другие значения, связанные с этим. Я могу реализовать это с помощью интерфейсов, но […]