0
点赞
收藏
分享

微信扫一扫

如何学习RxJava3?有这个项目就够了

12a597c01003 2022-02-16 阅读 52


前言

最近跳槽到了一家新的公司, 居然发现这家公司的项目大量使用了RxJava3相关的技术, 这让我这个Rx系列轻度使用者有些无所适从.

俗话说, 千学不如一看, 千看不如一练. 为了能够快速地熟悉和掌握RxJava3相关的内容, 我参照了官方文档并结合了之前使用的经验, 写了一个小的学习项目​​RxJava3Sample​​, 里面包含了文档简介、例子、日志展示和源码等内容。

就这样, 我看着文档一遍遍地敲着代码学习, 掌握的速度非常的迅速. 有对RxJava3感兴趣的不妨把项目下下来, 本地跑一跑试一试, 效果绝对出乎你想象!

好了话不多说, 下面我来简单介绍一下这个项目.

项目地址

​​https://github.com/xuexiangjys/RxJava3Sample​​

演示效果

发射器类型

类型

描述

Observable

能够发射0或n个数据,并以成功或错误事件终止。

Flowable

能够发射0或n个数据,并以成功或错误事件终止。支持Backpressure,可以控制数据源发射的速度。可由Observable转化而来。

Single

只发射单个数据或错误事件。只处理 onNext 和 onError 事件,没有onComplete。

Completable

它从来不发射数据,只处理 onComplete 和 onError 事件。可以看成是Rx的Runnable。

Maybe

能够发射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开源之旅】




举报

相关推荐

MySQL面试有这一篇就够了

0 条评论