RxJava介绍

Rx模式

使用观察者模式

  • 创建:Rx可以方便的创建事件流和数据流
  • 组合:Rx使用查询式的操作符组合和变换数据流
  • 监听:Rx可以订阅任何可观察的数据流并执行操作

简化代码

  • 函数式风格:对可观察数据流使用无副作用的输入输出函数,避免了程序里错综复杂的状态
  • 简化代码:Rx的操作符通通常可以将复杂的难题简化为很少的几行代码
  • 异步错误处理:传统的try/catch没办法处理异步计算,Rx提供了合适的错误处理机制
  • 轻松使用并发:Rx的Observables和Schedulers让开发者可以摆脱底层的线程同步和各种并发问题

Observable的优势

Rx扩展了观察者模式用于支持数据和事件序列,添加了一些操作符,它让你可以声明式的组合这些序列,而无需关注底层的实现:如线程、同步、线程安全、并发数据结构和非阻塞IO

RxJava介绍

为什么会有RxJava?

减少REST调用的次数。取代几十次的REST调用,而是让客户端自己处理需要的数据,他们决定基于客户端需求创建一个专门优化过的REST调用。

RxJava主要特性

  • 易于并发从而更好的利用服务器的能力
  • 易于有条件的异步执行
  • 一种更好的方式来避免回调地狱
  • 一种响应式方法

RxJava新特性

  • 生产者在没有更多数据可用时能够发出信号通知:onCompleted()事件
  • 生产者在发生错误时能够发出信号通知:onError()事件
  • RxJava Observables 能够组合而不是嵌套,从而避免开发者陷入回调地狱

Observables和Iterables共用一个相似的API,在Iterable可以执行的许多操作也都同样可以在Observables上执行,除了remove

RxJava角色

  • Observable
  • Observer
  • Subscriber
  • Subjects

Observables和Subjects是两个“生产”实体
Observers和Subscribers是两个“消费”实体

热Observables和冷Observables

从发射物的角度来看,有两种不同的Observables:热的和冷的。一个”热”的Observable典型的只要一创建完就开始发射数据,因此所有后续订阅它的观察者可能从序列中间的某个位置开始接受数据(有一些数据错过了)。一个”冷”的Observable会一直等待,直到有观察者订阅它才开始发射数据,因此这个观察者可以确保会收到整个数据序列。

  • 获取数据 onNext()
  • 异常处理 onError(Exception)
  • 任务完成 onCompleted()

观察者模式

RxJava中文文档