RxJava介绍与基本使用

282 阅读2分钟

RxJava 介绍与基本使用

一、什么是 RxJava?

RxJava(Reactive Extensions for Java)是一个用于构建异步程序和事件驱动程序的库,它基于观察者模式(Observer Pattern)和函数式编程(Functional Programming)。RxJava 使处理异步数据流变得更加简单和灵活,通过将数据流(或事件流)视为连续的流,并通过一系列操作符来处理这些流,实现了声明式的异步事件处理,从而提高了代码的可读性和可维护性。

RxJava GitHub 地址

二、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 控制 ObservableObserver 的运行线程。RxJava 提供了多个调度器来处理线程切换,如 Schedulers.io()Schedulers.computation()Schedulers.newThread()

observable
        .subscribeOn(Schedulers.io()) // 指定 Observable 的运行线程
        .observeOn(AndroidSchedulers.mainThread()) // 指定 Observer 的线程
        .subscribe(observer);

6. Operators(操作符)

操作符用于对 Observable 发射的数据项进行转换、过滤、组合等操作。例如,mapfilterflatMap 等。

observable
        .map(String::toUpperCase) // 将字符串转换为大写
        .filter(s->s.startsWith("H")) // 过滤掉不以“H”开头的数据
        .subscribe(observer);

RxJava更多使用

下面这三篇文章介绍了RxJava的基本使用及各种操作符的使用:

RxJava 只看这一篇文章就够了 (上)

RxJava 只看这一篇文章就够了 (中)

RxJava 只看这一篇文章就够了 (下)