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!