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’)