前言
最近跳槽到了一家新的公司, 竟然发现这家公司的我的项目大量应用了 RxJava3 相干的技术, 这让我这个 Rx 系列轻度使用者有些莫衷一是.
俗话说, 千学不如一看, 千看不如一练. 为了可能疾速地相熟和把握 RxJava3 相干的内容, 我参照了官网文档并联合了之前应用的教训, 写了一个小的学习我的项目 RxJava3Sample, 外面蕴含了文档简介、例子、日志展现和源码等内容。
就这样, 我看着文档一遍遍地敲着代码学习, 把握的速度十分的迅速. 有对 RxJava3 感兴趣的无妨把我的项目下下来, 本地跑一跑试一试, 成果相对出乎你设想!
好了话不多说, 上面我来简略介绍一下这个我的项目.
我的项目地址
https://github.com/xuexiangjys/RxJava3Sample
演示成果
发射器类型
类型 | 形容 |
---|---|
Observable<T> | 可能发射 0 或 n 个数据,并以胜利或谬误事件终止。 |
Flowable<T> | 可能发射 0 或 n 个数据,并以胜利或谬误事件终止。反对 Backpressure,能够控制数据源发射的速度。可由 Observable 转化而来。 |
Single<T> | 只发射单个数据或谬误事件。只解决 onNext 和 onError 事件,没有 onComplete。 |
Completable | 它从来不发射数据,只解决 onComplete 和 onError 事件。能够看成是 Rx 的 Runnable。 |
Maybe<T> | 可能发射 0 或者 1 个数据,要么胜利,要么失败。相似 Single 和 Completable 的联合。如果解决了 onNext 和 onError,那么就不解决 onComplete。 |
Subject
Subject 既是 Observable 又是 Observer(Subscriber)
类型 | 形容 |
---|---|
PublishSubject | 只能接管到订阅之后的所有数据 |
BehaviorSubject | 接管到订阅前的最初一条数据和订阅后的所有数据 |
AsyncSubject | 只接管到最初一条数据 |
ReplaySubject | 接管订阅前和订阅后的所有数据 |
SerializedSubject | 线程平安的 Subject,可由其余 Subject 调用 toSerialized 转换而来 |
罕用操作符
类型 | 操作符 |
---|---|
创立类型 | create、just、timer、interval、from、error |
转换类型 | map、flatMap、concatMap、switchMap、buffer |
过滤类型 | filter、ofType、debounce、throttleWithTimeout、distinct、distinctUntilChanged、first、last、take、skip |
联合类型 | merge、zip、combineLatest |
错误处理类型 | retry、onErrorResumeNext |
辅助操作类型 | delay、subscribeOn、do、to、timeout |
条件和布尔类型 | amb、contains、takeUntil、skipUntil |
算术和聚合类型 | reduce、max、min、sum |
Scheduler
类型 | 形容 |
---|---|
Schedulers.io | 缓存线程池,线程数量无穷大,用于 I / O 操作 |
Schedulers.computation | 固定线程池,大小为 CPU 核数,用于 CPU 密集型计算(无阻塞) |
Schedulers.single | 单线程池 |
Schedulers.newThread | 为指定工作启动一个新的线程 |
Schedulers.trampoline | 当其它排队的工作实现后,在以后线程排队开始执行 |
Schedulers.from | 应用指定的 Executor 作为调度器 |
AndroidSchedulers.mainThread | Android 的主线程,即 UI 线程 |
Plugins
插件,又可称 Hook, 能够批改 Rxjava 的默认行为。
应用 RxJavaPlugins 能够进行以下三类性能的 Hook 和自定义:
- 发射器 Observable、Single、Completable 和 Maybe 的生命周期(装载和被订阅)。
- Rxjava 的各类线程调度器 Scheduler。
- Rxjava 全局未解决的谬误。
特别感谢
- RxDocs
- 中文文档
- RxJava Wiki
最初
如果你感觉这个我的项目对你学习 RxJava3 有所帮忙, 你能够点击 star 进行珍藏或者将其分享进来, 让更多的人理解和把握 RxJava3!
我是 xuexiangjys,一枚酷爱学习,喜好编程,致力于 Android 架构钻研以及开源我的项目教训分享的技术 up 主。获取更多资讯,欢送微信搜寻公众号:【我的 Android 开源之旅】