RxJava概念
主要的想法是觀察者模式(Observer Pattern),由觀察者(Observer)及被觀察者(Observable)組成
觀察者透過註冊/訂閱(Subscribe)被觀察者,監控被觀察者。被觀察者只要偵測到變化就會通知觀察者
快速判斷:要判斷觀察者和被觀察者的角色分別,就看哪一個是會先改變的,會先改變的那個就是被觀察者,接收被觀察者通知才改變的就是觀察者。
在Java的寫法和觀念顛倒:
observable.subscribe(observer)
Observer
針對Observable的通知行為應該要有些什麼反應
Observer<String> observe = new Observer<String> {
@Override
public void onNext(String s) {
Log.d(TAG, "Item: " + s);
}
@Override
public void onCompleted() {
Log.d(TAG, "Completed!");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, e.getMessage());
}
}
onNext() -> 接到通知以後會逐條執行的行為
onCompleted() -> 全部onNext()執行完會去執行的方法
onError() -> 執行途中發生錯誤會去執行的方法
Observable
被觀察者如何通知觀察者
Observable observable = Observable.create(new Observable.onSubscribe<String>(){
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("Hello!");
subscriber.onNext("World!");
subscriber.onCompleted();
}
})
一旦被訂閱就會觸發call()
Subscribe
observable.subscribe(observer)
Last updated
Was this helpful?