RX的簡介
- RX = Observables + LINQ +Schedulers
- LINQ 語言內建查詢 Language Integrated Query
- Schedulers 定時任務
- RX是一種程式設計模型,目的是提供統一的程式設計接口,友善開發者處理儀表資料流。
- 目前為止RX已經支援幾乎所有的主流程式設計語言。 比較流行的有
- RxJava
- RxJS
- Rx.NET
RX的優點
- 函數式的程式設計風格:對可觀察資料流使用無副作用的輸入輸出函數,避免程式裡錯綜複雜的狀态
- 簡化代碼: 可以通過操作符來簡化代碼 ,常用的操作符:
- 過濾 filter
- 選擇 select
- 變換 transform
- 結合 combine
- 組合 compose
- 異步錯誤處理機制:傳統的try/catch沒辦法一部處理計算,RX提供了合适的錯誤處理機制
- 輕松使用并發:RX的Observables和Schedlers讓開發者徹底擺脫底層的線程同步和各種并發問題
- 可以把Observable當作Iterable的推送方式的等價物, 使用Iterable,消費者從生産者那裡拉取資料,縣城阻塞直至資料準備好。使用Observable,在資料準備好時,生産者将資料推送給消費者,資料可以同步或者異步到達。
RXJava的核心
- 觀察者
- 被觀察者
- 事件 event
- 訂閱 subscriber
- Observable 和Observer通過subscribe()方法來實作訂閱關系,進而Observable可以在需要的時候發出事件來通知Observer。
- Observable和Subscriber可以做任何事情
- Observable可以是一個資料庫查詢,Subscriber用來顯示查詢結果;
- Observable可以是螢幕上的點選事件,Subscriber用來響應點選事件;
- Observable可以是一個網絡請求,Subscriber用來顯示請求結果。
- Observable和Subscriber是獨立于中間的變換過程的。
- 在Observable和Subscriber中間可以增減任何數量的map。整個系統是高度可組合的,操作資料是一個很簡單的過程。
RXjava在android中的使用步驟
-
1.在app目錄下的build.gradle中添加
compile ‘io.reactivex:rxjava:1.1.5’
compile ‘io.reactivex:rxandroid:1.2.0’
-
2.在app目錄下的build.gradle android中添加
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
-
3.在app目錄下的build.gradle中添加
apply plugin: ‘me.tatarka.retrolambda’
-
4.在工程的build.gradle中添加
classpath ‘me.tatarka:gradle-retrolambda:3.2.5’
在androidstudio中使用aar檔案
-
1.在app目錄下的build.gradle中添加
repositories {
flatDir {
dirs ‘libs’
}
}
-
2.在在app目錄下的build.gradle dependencies中添加
compile(name: ‘rxandroid-1.2.0’, ext: ‘aar’)