RxJava 简介

RxJava 的核心概念是 ObservablesSubscribers。一个 Observable 发射物体,而一个 Subscriber 消耗它们。

可观察

Observable 是一个实现反应式设计模式的类。这些 Observables 提供了允许消费者订阅事件更改的方法。事件更改由 observable 触发。Observable 可以拥有的订户数量或者 Observable 可以发射的对象数量没有限制。

举个例子:

Observable<Integer> integerObservable = Observable.just(1, 2, 3); // Integer observable
Observable<String> stringObservable = Observable.just("Hello, ", "World", "!"); // String observable

这里,一个名为 integerObservablestringObservable 的可观察对象是由 Rx 库提供的工厂方法 just 创建的。请注意,Observable 是通用的,因此可以发出任何对象。

订户

一个 Subscriber 是消费者。Subscriber 只能订阅一个 observable。Observable 称为 SubscriberonNext()onCompleted()onError() 方法。

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 必须通过在 observable 上调用 subscribe 方法来订阅 observable。

integerObservable.subscribe(mSubscriber);

以上,运行时,将产生以下输出:

onNext called with: 1
onNext called with: 2
onNext called with: 3
onCompleted called!