- 介绍
- ReactiveX是Reactive Extensions的缩写,一般简写为Rx;
- 在2012年11月开源,Rx是一种编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx支持.NET、JavaScript和C++;
- 微软给出定义,Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序(可以这样定义:Rx=Observable + LINQ + Schedule)
注:LINQ,语言集成查询(Language Integrated Query)
4. Rx不仅仅是一个编程接口,它是一种编程思想的突破,它影响了许多其他的程序库和框架以及编程语言。
- Rx模型以及优点
- 使用观察者模式
- 创建:Rx可以方便的创建事件流和数据流
- 组合:Rx使用查询式的操作符组合和变换数据流
- 监听:Rx可以订阅任何可观察的数据流并执行
- 简化代码
- 函数式风格:对可观察数据流使用无副作用的输入输出函数,避免了程序里错综复杂的状态
- 简化代码:Rx操作符通常可以将复杂的难题简化为很少的几行代码
- 异步错误处理:传统的try/catch没办法处理异步计算,Rx提供了合适的错误处理机制
- 轻松使用并发:Rx的Observable和Schedulers让开发者可以摆脱底层的线程同步和各种并发问题
- 响应式编程
- 提供一系列的操作符,可以使用它们来过滤(filter)、选择(select)、变换(transform)、结合(combine)和组合(compose)多个Observable,这些操作符让执行和复合变得非常高效。(注:针对RxAndroid来说)
- 可以把Observable当作Iterable的推送方式的等价物,使用Iterable,消费者从生产者那拉取数据,线程阻塞直至数据准备好。使用Observable,在数据准备好时,生产者将数据推送给消费者。数据可以同步或异步的到达,这种方式更灵活。
- RxJava的观察者模式
- 观察者模式面向的需求是:A对象(观察者)对B对象(被观察者)的某种变化高度敏感,在B变化的一瞬间做出反应。举例:警察抓小偷。
- RxJava有四个基本概念:Observable(被观察者)、Observer(观察者)、subscribe(订阅)、事件。
- Observable和Observer通过subscribe()方式实现订阅关系,从而Observer可以在需要的时候发出事件来通知Observer。
- 使用观察者模式
- RxJava基本实现
- 创建Observer;
即观察者,它决定事件触发的时候将有怎样的行为。Observer接口
2. 创建Observable;
> 即被观察者,它决定什么时候触发事件以及触发怎样的事件。RxJava使用create()方法来创建一个Observable,并为它定义事件触发规则
3. Subscribe(订阅);
> 创建Observable和Observer之后,再用subscribe()方法将他们联结起来
- 创建Observer;
- RxAndroid实现的详细步骤
- 配置Gradle
- 配置依赖库:
compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0'
- 支持JDK1.8:
①其目的是为了使用表达式语言;
②其具体做法是在build.gradle(main Module)中的android{}块中添加一下代码
compileOptions{
}sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
- 添加表达式语言的插件:
- 在build.gradle(main Module)中添加应用
apply plugin: 'me.tatarka.retrolambda'
- 在项目的build.gradle(Project)中添加依赖
classpath 'me.tatarka:gradle-retrolambda:2.5.0'
- 配置依赖库:
- 配置Gradle
- 观察者回调方法的剖析
- void onNext(T item)
Observable调用该方法发送数据,方法的参数就是Observable发送的数据,该方法可能被调用多次,取决于你的实现。
2. void onError(Throwable e)
> 当Observable遇到错误或者无法返回期望的数据时会调用这个方法,这个调用会终止Observable,后续不会再调用onNext()和onCompleted(),onError()方法的参数是抛出的异常。
3. void onCompleted()
> 正常终止,如果没有遇到错误,Observable在最后一次调用onNext()之后调用此方法。
- void onNext(T item)
Rx介绍
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard...
- 文章转自:http://gank.io/post/560e15be2dca930e00da1083作者:扔物线在正...
- 前言 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboar...
- 前言 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboar...