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!