前言

最近跳槽到了一家新的公司, 竟然发现这家公司的我的项目大量应用了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.mainThreadAndroid的主线程,即UI线程

Plugins

插件,又可称Hook, 能够批改Rxjava的默认行为。

应用RxJavaPlugins能够进行以下三类性能的Hook和自定义:

  • 发射器Observable、Single、Completable和Maybe的生命周期(装载和被订阅)。
  • Rxjava的各类线程调度器Scheduler。
  • Rxjava全局未解决的谬误。

特别感谢

  • RxDocs
  • 中文文档
  • RxJava Wiki

最初

如果你感觉这个我的项目对你学习RxJava3有所帮忙, 你能够点击star进行珍藏或者将其分享进来, 让更多的人理解和把握RxJava3!

我是xuexiangjys,一枚酷爱学习,喜好编程,致力于Android架构钻研以及开源我的项目教训分享的技术up主。获取更多资讯,欢送微信搜寻公众号:【我的Android开源之旅】