本章节涉及到的 RxJava 组成要素 :
Observable(被观察者): Observable 是一个 可以发送消息的数据源 , 可以同时发送若干消息 , 消息的格式可以通过泛型进行定义 ; 消息发送完毕后 会 通知观察者。Observable 通过 订阅观察者 来实现 消息的传递。
Observer(观察者): Observer 表示一个接收 Observable 发送消息 的观察者。 它可以处理从 Observable 发射的消息, 还可以处理错误和完成的事件。
Subscription(订阅): 订阅是 Observer 对 Observable 的绑定, 它表示观察者正在接收 Observable 的数据项。 订阅可以被取消, 取消订阅后 Observer 观察者将不再接收 Observable 被观察者 的消息。
Gradle 项目中 , 在 build.gradle 构建脚本中 , 添加如下依赖 ;
dependencies {
implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
}
rxjava3 依赖 :
dependencies {
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
}
Maven 项目中 , 在 pom.xml 中添加如下依赖 ;
<dependency>
<groupId>io.reactivex.rxjava2groupId>
<artifactId>rxjavaartifactId>
<version>2.2.21version>
dependency>
rxjava3 依赖 :
<dependency>
<groupId>io.reactivex.rxjava3groupId>
<artifactId>rxjavaartifactId>
<version>3.0.0version>
dependency>
Observer(观察者): Observer 表示一个接收 Observable 发送消息 的观察者。 它可以处理从 Observable 发射的消息, 还可以处理错误和完成的事件。
Observer 观察者 是 操作的核心 , 定义在需要进行具体操作的位置 , 执行具体的 异步操作 或 事件 ;
如 : 在 UI 界面中 , 点击按钮 , 查询远程数据库服务器中的数据 , 查询完毕后更新 UI 界面 ;
Observer 观察者定义代码 :
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
// 当观察者订阅时的回调
}
@Override
public void onNext(String value) {
// 当接收到新的事件时的回调
System.out.println(value);
}
@Override
public void onError(Throwable e) {
// 当发生错误时的回调
}
@Override
public void onComplete() {
// 当事件流结束时的回调
}
};
Observable(被观察者): Observable 是一个 可以发送消息的数据源 , 可以同时发送若干消息 , 消息的格式可以通过泛型进行定义 ; 消息发送完毕后 会 通知观察者。Observable 通过 订阅观察者 来实现 消息的传递。
Observable<String> observable = Observable.just("Hello", "World");
Subscription(订阅): 订阅是 Observer 对 Observable 的绑定, 它表示观察者正在接收 Observable 的数据项。 订阅可以被取消, 取消订阅后 Observer 观察者将不再接收 Observable 被观察者 的消息。
调用 Observable 被观察者 的 subscribe 函数 , 订阅 Observer 观察者 ;
该订阅操作的同时 , 会将消息发送给 Observer 观察者 , 触发 Observer#onNext 函数 ;
observable.subscribe(observer);
代码示例 :
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public class Main {
public static void main(String[] args) {
Observable<String> observable = Observable.just("Hello", "World", "RxJava");
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
// 当观察者订阅时的回调
}
@Override
public void onNext(String value) {
// 当接收到新的事件时的回调
System.out.println(value);
}
@Override
public void onError(Throwable e) {
// 当发生错误时的回调
}
@Override
public void onComplete() {
// 当事件流结束时的回调
}
};
observable.subscribe(observer);
}
}
执行结果 :
Hello
World
RxJava