前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何学习RxJava3?有这个项目就够了!

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

作者头像
xuexiangjys
发布2022-04-18 13:36:50
6720
发布2022-04-18 13:36:50
举报

前言

最近跳槽到了一家新的公司, 居然发现这家公司的项目大量使用了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主。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我的Android开源之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 项目地址
  • 演示效果
  • 发射器类型
  • Subject
  • 常用操作符
  • Scheduler
  • Plugins
  • 特别感谢
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档