关于android:如何学习RxJava3有这个项目就够了

37次阅读

共计 1854 个字符,预计需要花费 5 分钟才能阅读完成。

前言

最近跳槽到了一家新的公司, 竟然发现这家公司的我的项目大量应用了 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 开源之旅】

正文完
 0