什么是Rx
- ReactiveX是Reactive Extensions的縮寫。
- Rx是一個編程模型,目標是提供一致的編程接口,幫助開發(fā)者更方便的處理異步數(shù)據(jù)流。目前Rx支持大部分流行的編程語言, 比如Java、C#、PHP等。
-Rx是一個函數(shù)庫,讓開發(fā)者可以利用可觀察序列和LINQ風格查詢操作符來編寫異步和基于事件的程序。
-可以這樣定義:Rx = Observables + LINQ + Schedulers。 - ReactiveX不僅僅是編程接口,更是一種編程思想的突破。Rx還影響了其它程序庫、框架以及編程語言。
Rx模式——觀察者模式
-創(chuàng)建:Rx可以方便的創(chuàng)建事件流和數(shù)據(jù)流;
-組合:Rx使用查詢式的操作符組合和變換數(shù)據(jù)流;
-監(jiān)聽:Rx可以訂閱任何可以觀察的數(shù)據(jù)流并執(zhí)行操作。
Rx優(yōu)點——簡潔
-函數(shù)式風格:Rx可以方便的創(chuàng)建事件流和數(shù)據(jù)流;
-簡化代碼:Rx的操作符可以將復雜的邏輯簡化為很少的幾行代碼;
-異步錯誤處理機制:傳統(tǒng)的try/catch沒辦法處理異步計算,Rx提供了合適的錯誤處理機制;
-輕松使用并發(fā):Rx的Observables和Schedulers讓開發(fā)者可以避免底層線程同步和各種并發(fā)問題。
什么是RxJava
RxJava是[ReactiveX](http://reactivex.io/)在JVM上的一個實現(xiàn),也就是說RxJava就是一種用Java語言實現(xiàn)的響應式編程,來創(chuàng)建 基于事件的異步程序。
提升開發(fā)效率,降低維護成本一直是開發(fā)團隊永恒不變的宗旨。近一年來國內(nèi)的技術圈子中越來越多的開始提及RxJava,學習和掌握RxJava已經(jīng)很有必要。RxJava能幫助我們簡化代碼邏輯,提升代碼可讀性。這對于提升開發(fā)效率、降低后期維護成本很有幫助。
RxJava正在Android開發(fā)者中變的也越來越流行。唯一的問題就是上手不容易,尤其是大部分人之前都是使用命令式編程語言。但是一旦你弄明白了,你就會發(fā)現(xiàn)RxJava真是太棒了。
本系列幫助你了解RxJava,希望你學完之后能夠了解RxJava背后的思想(熟練掌握還需要多使用多實踐),并且喜歡RxJava。
學習RxJava
響應式編程的主要組成部分是Observable、 operator和subscriber。一般響應式編程的信息流如下所示:
Observable-> Operator 01 -> Operator 02->Operator03 ->Subscriber
Observable是事件的生產(chǎn)者,Subscriber是事件最終的消費者。
因為Subscriber通常在主線程中執(zhí)行,因此設計上要求代碼盡可能簡單,只對事件作出響應(不對事件和數(shù)據(jù)進行修改),而修 改事件的工作全部由 operator執(zhí)行。
Observable observable = Observable.create(newObservable.OnSubscribe() {
@Override
public voidcall(Subscriber subscriber) {
subscriber.onNext("hello word");
subscriber.onCompleted();
}
});
Observer observer =newObserver() {
@Override
public voidonCompleted() {
System.out.println("onCompleted");
}
@Override
public voidonError(Throwable e) {
System.out.println("onError");
}
@Override
public voidonNext(String s) {
System.out.println("onNext= "+ s);
}
};
observable.subscribe(observer);
上面提到修改事件在operator中執(zhí)行(下面代碼)
observable.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s+" add content";
}
}).subscribe(observer);