RxJava 詳解
目錄
用 [TOC]
來生成目錄:
RxJava:一個在Java VM 虛擬機上使用可觀測的序列來組成異步的、基於事件的程序的庫。
- Rxjava 模式
- RxJava 事件回調方法
- RxJava 的API的實現
- RxJava 的示例
- *簡化*RxJava代碼
Rxjava 的設計模式
觀察者模式:觀察者定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一主題對象。(發佈-訂閱模式) —— [ 百度百科 ]
用註冊(Register)或者稱爲訂閱(Subscribe)的方式,觀察者訂閱了被觀察者的狀態,當被觀察者的狀態發生改變的時候,就會通知觀察者 ,被觀察者的狀態已經發生改變。
具體請參考RxJava源碼Github.
如圖
RxJava 的觀察者模式
- 四個基本概念
- Observable
- 可觀察者、既被觀察者
- Observer
- 觀察者
- Subscribe
- 訂閱、時間
Observable和Observer通過subscribe()方法實現訂閱關係
> subscribe()
RxJava的事件回調方法
- onNext() 相當於onclick()/onEvent()
- onCompleted() 事件隊列完結;
- onError() 事件隊列異常
在一個正確運行的事件序列中,onCompleted和onError有且只有一個,並且是事件序列中的最後一個。
RxJava的API實現
- 創建一個Observer,也就是觀察者;
- 創建一個Observable,也就是被觀察者;
- 利用subscriber()方法綁定關係
觀察者observer示例
Subscriber()訂閱和觀察者是一樣的。
Observer<String> observer = new Observer<String>(){
public void onNext(String s){
Log.d(tag,"item:"+s);
}
public void onCompleted(){
Log.d(tag,"onCompleted");
}
public void onError(){
Log.d(tag,"onError");
}
}
被觀察者:Obervable示例:
Obervable<String> observer = Obervable.create(new Obervable.OnSubscriber String>(){
public void call(Subscriber <? super String> subscriber){
subscriber.onNext("Hello");
subscriber.onNext("Hi");
subscriber.onCompleted();
}
});
//簡寫方法
Obervable observer =Obervable.just("Hello","Hi","你好")
綁定關係
兩種綁定方式
observable.subscribe(observer);
//or
observable.subscribe(subscriber);
函數響應式編程(FRP)
函數響應式編程(FRP):是在觀察者模式的基礎上,增加對被觀察者發送的數據流進行操縱和變換的功能。
響應是編程的信息流
observalbe ->Operator1 ->Operator2 ->Subscriber
也就是說,observable是事件的生產者,subscriber是事件的消費者
注意引入庫:compile ‘io.reactivex:rxjava:x.y.z’
代碼的簡化我們下期在講解