background preloader

RxJava

Facebook Twitter

Посмотрим на rx.Single в RxJava? / Песочница. Всем добрый день!

Посмотрим на rx.Single в RxJava? / Песочница

А может у кого-то и не день, но главное, чтобы был добрый. В этой статье я собираюсь рассказать совсем чуть-чуть про такой класс в RxJava, как Single. А чем Single отличается от Observable ? Конечно, у него нет всех методов, которые есть у Observable. Subscriber у Single также отличается тем, что содержит только два метода, а не три. Возникает вопрос: чем вызваны такие изменения ? Ответ тут очевиден: Single (что можно даже и из названия понять) содержит только один элемент, в отличии от Observable. Кто-то подумает и скажет пффф, ну и что? По-моему мнению, в этом ничего страшного нет, но есть ли какие-то минусы от такого использования?

Говоришь Single, хм... В single возможны две ситуации:одно значение exception Тут важно понимать, чего вы пытаетесь добиться, или какая ваша политика? Да покажи наконец как использовать этот Single! Обычный пример из жизни. Входные данные: у нас есть три микросервиса A,B,C. Но вспоминаем, что у нас есть rx.Single, ураа! И вот оно! Исследуем RxJava 2 для Android / Блог компании Badoo. Меня зовут Аркадий, я Android-разработчик в Badoo.

Исследуем RxJava 2 для Android / Блог компании Badoo

В последнее время в нашем блоге много постов про Go, PHP, JS, QA, и я решил разбавить их темами по мобильной разработке. Как раз занимался портированием одного Android-проекта с RxJava 1 на RxJava 2 и читал всё, что можно найти на эту тему в интернете. В частности, доклад Джейка Вортона с конференции GOTO Copenhagen 2016. Мне показалось, что это достойный кандидат на перевод – думаю, многие Android-разработчики задумываются о переходе на RxJava 2, и им интересно, что изменилось по сравнению с первой версией. Джейк сделал достаточно объёмное введение о реактивном программировании, так что знание RxJava 1 не требуется для понимания статьи. Почему Reactive? Почему все вокруг вдруг стали говорить о реактивном программировании? Чтобы пояснить, почему я считаю это серьёзной проблемой, приведу пример. Начнём с простого класса, который может получить для нас объект User с какими-то модификаторами.

Можем сообщить пользователю о проблеме. Исследуем RxJava 2 для Android / Блог компании Badoo. Повороты экрана в Android без боли. Предисловие Истинное понимание проблем каждой платформы приходит после того, как попробуешь писать под другую платформу / на другом языке.

Повороты экрана в Android без боли

И вот как раз после того, как я познакомился с разработкой под iOS, я задумался над тем, насколько ужасна реализация поворотов экрана в Android. С того момента я думал над решением данной проблемы. Попутно я начал использовать реактивное программирование везде, где только можно и уже даже не представляю как писать приложения по-другому. И вот я узнал про последнюю недостающую деталь — Data Binding. Когда начались проблемы? По настоящему остро я почувствовал проблему, когда в одном проекте у меня получился экран на 1500 строк xml, по дизайну и ТЗ там было целая куча различных полей, которые становились видимыми при разных условиях. Возможное решение Сразу оговорюсь, я против фанатичного следования заветам какого-либо подхода, я пытаюсь делать универсальные и надежные решения, несмотря на то, как это смотрится с точки зрения какого-либо паттерна.

Release 2.1.0 · ReactiveX/RxJava. Rx. Постигаем retryWhen и repeatWhen на примерах из Android разработки. В сети очень много русско- и англоязычных статей по Rx операторам retryWhen и repeatWhen.

Rx. Постигаем retryWhen и repeatWhen на примерах из Android разработки

Несмотря на это, очень часто встречаю нежелание их использовать (ввиду сложного синтаксиса и непонятных диаграмм). Приведу несколько как можно с их помощью эффективно перезапускать участки цепи и делегировать обработку перезапусков при ошибках и завершениях потока. В примерах будет Java код с лямбдами (Retrolamda), но переписать его на Kotlin или чистую Java не составит труда.

Императивный способ перезапуска цепи Предположим, мы используем Retrofit и загрузку начинаем в методе load(). Private Subscription loadingSubscription = Subscriptions.unsubscribed(); private void load() { subscription.unsubscribe(); subscription = repository .getSomething() .subscribe(result -> {}, err -> {}); } private void update() { load(); } Из какого-нибудь листенера обновлений (e.g. Предлагаю ко вниманию вариант использования более реактивного, на мой взгляд, способа с вышеупомянутым оператором repeatWhen(). Без ничего. Насколько гибкими являются наши знания в области операторов Rx? RxJava набирает все большую популярность в нынешнее время.

Насколько гибкими являются наши знания в области операторов Rx?

На ней написаны многие библиотеки для Java и Android, а обладание знаниями в этой области стало синонимом избранности. В резюме строка с описанием того что вы спец в реактивном программировании поднимает вашу привлекательность для работодателей перед вашими конкурентами. И вот я тоже решил присоединиться к этому течению, освоить и начать применять в своих проектах RxJava. В процессе чтения нескольких книг и статей все было абсолютно понятно. «Эти знания и правда в разы укоротят код и придадут читабельности» — думал я. Еще куча времени было потрачено на практику и блуждание в операторах. Давайте начнем с очень простой задачи: Задача 1: У вас есть список городов, уложенный в контейнер List. Исходные данные: Practical Challenges For RxJava Learners – Sergii Zhuk – Medium. RxJava is a valuable part of Java developer toolset and #1 language improvement framework for Android developers.

Practical Challenges For RxJava Learners – Sergii Zhuk – Medium

Many of us want to learn it better, read some blogs and sources, but often miss practice to consolidate collected knowledge. Below I suggest a way to challenge yourself with coding tasks and improve practical RxJava skills. Test Driven Learning Test Driven Development has become a significant part of development culture, and everyone knows about it even if not completely following it. I think that adopting this idea to learn new frameworks and libraries also makes sense. What if you have a set of cases with an acceptance criteria? This approach would require minimum amount of configuration and dependencies. Learn RxJava by coding I’ve built a set of simple code challenges to learn RxJava using JUnit tests as an acceptance criteria.

The context of the challenge is following. Current code challenge implementation Dependencies: RxJava 2.0.5JUnit 4.12.

Видеодоклады

Источники. Все.