RxJava 簡介
RxJava 的核心概念是 Observables 和 Subscribers。一個 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
這裡,一個名為 integerObservable 和 stringObservable 的可觀察物件是由 Rx 庫提供的工廠方法 just 建立的。請注意,Observable 是通用的,因此可以發出任何物件。
訂戶
一個 Subscriber 是消費者。Subscriber 只能訂閱一個 observable。Observable 稱為 Subscriber 的 onNext(),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!