rx-java учебник
Начало работы с rx-java
Поиск…
замечания
В этом разделе представлен общий обзор и поверхностное введение в rx-java.
RxJava - это реализация виртуальных расширений Java VM: библиотека для составления асинхронных и основанных на событиях программ с использованием наблюдаемых последовательностей.
Узнайте больше о RxJava в Wiki Home .
Версии
| Версия | Статус | Последняя стабильная версия | Дата выхода |
|---|---|---|---|
| 1.x | стабильный | 1.3.0 | 2017-05-05 |
| 2.x | стабильный | 2.1.1 | 2017-06-21 |
Установка или настройка
Настройка rx-java
Gradle
compile 'io.reactivex:rxjava2:rxjava:2.1.1'специалист
<dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.1.1</version> </dependency>плющ
<dependency org="io.reactivex.rxjava2" name="rxjava" rev="2.1.1" />Снимки от JFrog
repositories { maven { url 'https://oss.jfrog.org/libs-snapshot' } } dependencies { compile 'io.reactivex:rxjava:2.0.0-SNAPSHOT' }Если вам нужно загрузить банки вместо того , чтобы использовать систему сборки, создать Maven
pomфайл , как это с нужной версии:<?xml version="1.0"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.netflix.rxjava.download</groupId> <artifactId>rxjava-download</artifactId> <version>1.0-SNAPSHOT</version> <name>Simple POM to download rxjava and dependencies</name> <url>http://github.com/ReactiveX/RxJava</url> <dependencies> <dependency> <groupId>io.reactivex</groupId> <artifactId>rxjava</artifactId> <version>2.0.0</version> <scope/> </dependency> </dependencies> </project>
Затем выполните:
$ mvn -f download-rxjava-pom.xml dependency:copy-dependencies
Эта команда загружает rxjava-*.jar и ее зависимости в ./target/dependency/.
Вам нужна Java 6 или более поздняя.
Привет, мир!
Следующее выводит сообщение Hello, World! утешить
public void hello() {
Observable.just("Hello, World!") // create new observable
.subscribe(new Action1<String>() { // subscribe and perform action
@Override
public void call(String st) {
System.out.println(st);
}
});
}
Или используя Java 8 лямбда-нотацию
public void hello() {
Observable.just("Hello, World!") // create new observable
.subscribe(onNext -> { // subscribe and perform action
System.out.println(onNext);
});
}
Введение в RxJava
Основные понятия RxJava являются его Observables и Subscribers . Observable испускает объекты, а Subscriber их потребляет.
наблюдаемый
Observable - класс, который реализует реактивный шаблон дизайна. Эти Observables предоставляют методы, позволяющие потребителям подписываться на изменения событий. Наблюдаемые изменения события инициируются. Нет ограничений на количество подписчиков, которое может иметь Observable , или количество объектов, которое может наблюдаться Observable .
Возьмем, к примеру:
Observable<Integer> integerObservable = Observable.just(1, 2, 3); // Integer observable
Observable<String> stringObservable = Observable.just("Hello, ", "World", "!"); // String observable
Здесь, наблюдаемый объект , называемый integerObservable и stringObservable создается из фабричного метода just при условии библиотеки Rx. Обратите внимание, что Observable является общим и может, таким образом, испускать любой объект.
подписчик
Subscriber - это потребитель. Subscriber может подписаться только на один наблюдаемый. Observable вызывает onNext() , onCompleted() и onError() для Subscriber .
Subscriber<Integer> mSubscriber = new Subscriber<Integer>() {
// NOTE THAT ALL THESE ARE CALLED BY THE OBSERVABLE
@Override
public void onCompleted() {
// called when all objects are emitted
System.out.println("onCompleted called!");
}
@Override
public void onError(Throwable throwable) {
// called when an error occurs during emitting objects
System.out.println("onError called!");
}
@Override
public void onNext(Integer integer) {
// called for each object that is emitted
System.out.println("onNext called with: " + integer);
}
};
Обратите внимание, что Subscriber также является общим и может поддерживать любой объект. Subscriber должен подписаться на наблюдаемый, вызвав метод subscribe на наблюдаемый.
integerObservable.subscribe(mSubscriber);
Вышеприведенный при запуске будет производить следующий вывод:
onNext called with: 1
onNext called with: 2
onNext called with: 3
onCompleted called!
Понимание мраморных диаграмм
Наблюдаемый можно рассматривать как просто поток событий. Когда вы определяете Observable, у вас есть три прослушивателя: onNext, onComplete и onError. onNext будет вызываться каждый раз, когда наблюдаемое приобретает новое значение. onComplete будет вызываться, если родительский Observable уведомит, что он завершил создание каких-либо других значений. onError вызывается, если исключение вызывается в любое время во время выполнения цепи Observable. Чтобы показать операторов в Rx, мраморная диаграмма используется для отображения того, что происходит с конкретной операцией. Ниже приведен пример простого наблюдаемого оператора «Just».
Мраморные диаграммы имеют горизонтальный блок, который представляет выполняемую операцию, вертикальную полосу для представления завершенного события, X для представления ошибки, а любая другая форма представляет значение. Имея это в виду, мы можем видеть, что «Just» просто возьмет наше значение и сделает onNext, а затем закончит с onComplete. Есть намного больше операций, затем просто «Just». Вы можете увидеть все операции, которые являются частью проекта ReactiveX, а также реализации в RxJava на сайте ReativeX . Существуют также интерактивные мраморные диаграммы через сайт RxMarbles .
