RxJava 核心概念
我对 RxJava 三个版本的理解是相互不兼容的,但也是一个迭代演进的过程。所以想着从最初的版本开始探究一番本源。
本篇就是把几个核心类/接口梳理一番,并做记录,便于理解和日后的回顾。其实也可以说是对「RxJava 反应式编程」第 2 章内容的一个读后感。
先说 RxJava 的核心思想:为了缓解异步和事件驱动编程的痛苦。事件驱动编程的概念可能不好懂,我觉得也没必要一定要理解,总之就是为了更友好的去解决异步编程等相关的事。
Observable
Observable 可以理解为一个事件流,代表一个事件起源吧。它是基于推送的,也就是说随着事件的流动会被推送给它的订阅者们。
Observable 能产出三种事件流向,
- Observable 声明的类型为 T 的值
- 完成事件
- 错误事件
RxJava 提供了一些静态方法用于创建 Observable 对象,例如 just, range, empty, never, error 等。当然创建 Observable 对象的核心方法还是在 create 方法上。RxJava 另外一个重要概念 操作符 也会对 Observable 对象进行包装和增强。
这里说的 Observable 对象,默认说的是 cold 类型,也就是延迟执行的,只有等到订阅的时候,事件才会开始流起来。相对而言,hot 类型的 Observable 对象在创建或者获取到的时候,事件就可能已经开始了。
订阅者 Observer
前面说的是事件流 Observable,在没有订阅者观察时它是不会有任何产出的(这个可能结合源码分析会更好理解,这里先了解个概念),而想要订阅就要通过 Observable 的 subscribe() 方法。
订阅者可以是 Observer,它能观察 Observable 产出的三种事件流,分别对应着回调方法,
- onNext
- onError
- onCompleted
不过,Observer 显然不能取消订阅,如果想取消,可以用 Subscriber。因为 Subscriber 实现了 Subscription 接口,后者可以进行取消订阅的操作。
以上便是我认为的 RxJava 最为核心的东西,后面的很多东西都会围绕着这些概念展开,但不管怎么变,最本质的依然是这些,所以我认为有必要先了解这些,否则后面的东西看起来就会含糊不清,逻辑不明。
参考内容
「RxJava 反应式编程」