Rxjava2 Observable与Observer响应式编程在Rxjava2中的典型实现
在RxJava中,函数响应式编程具体表现为一个观察者(Observer)订阅一个可观察对象(Observable),通过创建可观察对象发射数据流,经过一系列操作符(Operators)加工处理和线程调度器(Scheduler)在不同线程间的转发,最后由观察者接受并做出响应的一个过程
ObservableSource与Observer是RxJava2中最典型的一组观察者与可观察对象的组合,其他四组可以看做是这一组的改进版或者简化版。
Observable
抽象类Observable是接口ObservableSource下的一个抽象实现,我们可以通过Observable创建一个可观察对象发射数据流。
Observer
创建一个观察者Observer来接受并响应可观察对象发射的数据流。在onNext方法中接收到可观察对象发射的数据"Hello World",并做出响应——打印到控制台。
Observer订阅Observable
一旦Observer与Observable建立了订阅关系,Observer与Observable便成为了一个整体,Observer便可对Observable中的行为作出响应。
步骤简化
在响应式编程的基础上,加上函数式编程,真正的函数响应式编程可以将代码简化成以下形式:
其中,just操作符是经过封装后,专门用来发射单条数据的,可以是一个数据,一条字符,一个对象,一整个数组,一整个集合。
Consumer可以看做是对观察者Observer功能单一化之后的产物——消费者,上例中的Consumer通过其函数accept只接收可观察对象发射的数据,不接收异常信息或完成信息。
发送数据序列
Observable可以发送单条数据或者数据序列,上面的事例都是发送单条数据'Hello World"的情形,那么怎样发送数据序列呢?
Observable发送一条数据,Observe接收一条,取消订阅关系之后,Observe将不再接收Observable发送的数据。