RxJava3Sample
RxJava3Sample copied to clipboard
RxJava3使用演示, 包含简介、例子、日志和源码等内容。
trafficstars
RxJava3Sample
RxJava3使用演示, 包含简介、例子、日志和源码等内容。
关于我
| 公众号 | 掘金 | 知乎 | CSDN | 简书 | 思否 | 哔哩哔哩 | 今日头条 |
|---|---|---|---|---|---|---|---|
| 我的Android开源之旅 | 点我 | 点我 | 点我 | 点我 | 点我 | 点我 | 点我 |
演示效果

发射器类型
| 类型 | 描述 |
|---|---|
| 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全局未处理的错误。
使用案例
特别感谢
如果觉得项目还不错,可以考虑打赏一波
你的打赏是我维护的动力,我将会列出所有打赏人员的清单在下方作为凭证,打赏前请留下打赏项目的备注!

联系方式
更多资讯内容,欢迎扫描关注我的个人微信公众号:【我的Android开源之旅】
