📜  RxJava-可以观察(1)

📅  最后修改于: 2023-12-03 15:04:58.252000             🧑  作者: Mango

RxJava - 可以观察

RxJava 是一个基于 Java 的响应式编程库。它提供了一种通用的 API,用于处理异步和基于事件的程序。RxJava 提供了 Observable 和 Flowable 类型,这些类型可以用于处理数据流和推送事件。

RxJava 基础概念
  • Observable 表示一个可观察的序列,它可以推送多个事件。
  • Observer 消费 Observable 发射的事件。
  • Subscription 表示 ObservableObserver 之间的连接。
  • Schedulers 决定 Observable 数据流在哪个线程以及何时执行。
代码示例

下面是一个简单的 RxJava 程序,它从一个数组中过滤奇数并输出。

import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

public class Main {
  public static void main(String[] args) {
    Integer[] numbers = {1, 2, 3, 4, 5};

    Observable.fromArray(numbers)
        .filter(n -> n % 2 == 0)
        .subscribeOn(Schedulers.io())
        .observeOn(Schedulers.single())
        .subscribe(new Observer<Integer>() {
          @Override
          public void onSubscribe(Disposable d) {
          }

          @Override
          public void onNext(Integer integer) {
            System.out.println(integer);
          }

          @Override
          public void onError(Throwable e) {
          }

          @Override
          public void onComplete() {
          }
        });
  }
}

在这个例子中,Observable.fromArray(numbers) 创建了一个 Observable,它把数组中的所有元素作为事件发射。filter 用于过滤奇数。subscribeOn(Schedulers.io())observeOn(Schedulers.single()) 决定了在哪个线程执行代码。最后,我们订阅了 Observable 并实现了处理事件的 Observer

总结

RxJava 提供了一种简单且强大的响应式编程模型,可以用于处理数据流和事件。它使用类似于枚举类型的 ObservableObserver 来处理事件,同时提供了丰富的操作符来简化编程。RxJava 对于处理异步和基于事件的程序非常有用。