RxJava 介绍与基本使用
一、什么是 RxJava?
RxJava(Reactive Extensions for Java)是一个用于构建异步程序和事件驱动程序的库,它基于观察者模式(Observer Pattern)和函数式编程(Functional Programming)。RxJava 使处理异步数据流变得更加简单和灵活,通过将数据流(或事件流)视为连续的流,并通过一系列操作符来处理这些流,实现了声明式的异步事件处理,从而提高了代码的可读性和可维护性。
二、RxJava 的基本使用
1. 添加依赖
在你的 build.gradle 文件中添加 RxJava 依赖:
dependencies {
implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
}
2. Observable(可观察对象)
Observable 是 RxJava 的核心组件,它代表了一个可以发射数据流的对象。Observable 可以发射零个或多个数据项,然后完成或报错。
Observable<String> observable=Observable.create(emitter->{
emitter.onNext("Hello");
emitter.onNext("World");
emitter.onComplete();
});
3. Observer(观察者)
Observer 用于接收 Observable 发射的数据项。它监听 Observable 的事件并做出相应的处理。
Observer<String> observer=new Observer<String>(){
@Override
public void onSubscribe(Disposable d){
// 当订阅开始时调用
}
@Override
public void onNext(String s){
// 接收到数据项时调用
System.out.println(s);
}
@Override
public void onError(Throwable e){
// 出现错误时调用
}
@Override
public void onComplete(){
// 数据流完成时调用
}
};
4. 订阅
observable.subscribe(observer);
5. Schedulers(调度器)
Schedulers 控制 Observable 和 Observer 的运行线程。RxJava 提供了多个调度器来处理线程切换,如 Schedulers.io()、Schedulers.computation() 和 Schedulers.newThread()。
observable
.subscribeOn(Schedulers.io()) // 指定 Observable 的运行线程
.observeOn(AndroidSchedulers.mainThread()) // 指定 Observer 的线程
.subscribe(observer);
6. Operators(操作符)
操作符用于对 Observable 发射的数据项进行转换、过滤、组合等操作。例如,map、filter、flatMap 等。
observable
.map(String::toUpperCase) // 将字符串转换为大写
.filter(s->s.startsWith("H")) // 过滤掉不以“H”开头的数据
.subscribe(observer);
RxJava更多使用
下面这三篇文章介绍了RxJava的基本使用及各种操作符的使用: