Course Content
-
Введение в RxJava 3.0. Способы создания Observable В первом модуле вы узнаете чем отличается Observable от Observer и поймете как создать источник данных
-
Основные операторы RxJava 3.0 Рассмотрим на примерах самые популярные операторы RxJava 3.0 такие как map(), flatMap(), filter() и другие.
-
Выходим в сеть с помощью RxJava
Основные понятия. Observable vs Observer
Для программирования на RxJava необходимо понять два базовых понятия: Observer и Observable.
Светофор – это пример Observable
Для начала, рассмотрим конкретный пример из жизни. Вы едете на машине и видите светофор, горящий красным цветом. Соответственно, вы останавливаетесь и ждете, пока не загорится зеленый. Таким образом, вы ждете событие – зеленый свет. Как только загорается зеленый – вы едете. В этом сравнении – цвета от светофора – это события, и вы (как и ваша программа) реагирует на события соответствующе.
Observables и Observer
Базовыми строительными блоками реактивного кода являются Observables и Observer. Observable – является источником данных, а Observer — потребителем.
Светофор (генерирующий разные цветовые сигналы) – это Observable (это источник данных), а водитель или пешеход – это Observer (получает события и реагирует).
Порождение данных через Observable всегда происходит в соответствии с одним и тем же порядком действий: Observable «излучает» некоторое количество данных (в том числе, Observable может ничего и не излучать), и завершает свою работу — либо успешно, либо с ошибкой.
Для каждого Observer, подписанного на Observable, вызывается метод Observer.onNext() для каждого элемента потока данных, после которого может быть вызван как onComplete(), так и onError().
В примере со светофором – каждый раз, когда сменяется цвет светофора – вы как наблюдатель, получаете информацию о том что сигнал поменялся, то есть был вызван метод onNext() в который пришел сигнал – цвет светофора.
Если же светофор сломается (например в случае отключения электричества) – то вы увидите что он не работает – то есть произойдет вызов метода onError
Observer – это интерфейс, который необходимо реализовать каждый раз, когда мы подписываемся на Observable для получения данных.
public interface Observer<T> { void onSubscribe(@NonNull Disposable d); void onNext(@NonNull T t); void onError(@NonNull Throwable e); void onComplete(); }
Этот интерфейс имеет 4 метода
- onSubscribe() – вызывается когда мы подписались на получение данных
- onNext() – вызывается каждый раз, когда происходит событие/приходят данные
- onError() – вызывается, когда произошла ошибка
- onComplete() – вызывается когда событий больше не будет
Примеры источников данных в приложении могут быть:
- Сетевой запрос, который возвращает данные от сервера.
- Запрос в базу данных.
- Кнопка или EditText тоже могут быть источниками данных, и оповещать о действиях пользователя.
В следующем уроке мы рассмотрим как создавать источник данных Observable.