{"id":19765753,"url":"https://github.com/xuexiangjys/rxjava3sample","last_synced_at":"2025-04-30T15:31:01.693Z","repository":{"id":37659585,"uuid":"439281065","full_name":"xuexiangjys/RxJava3Sample","owner":"xuexiangjys","description":"RxJava3使用演示, 包含简介、例子、日志和源码等内容。","archived":false,"fork":false,"pushed_at":"2023-12-15T05:51:05.000Z","size":463,"stargazers_count":27,"open_issues_count":1,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-02-29T16:31:51.824Z","etag":null,"topics":["rxjava","rxjava3","samples","x-samples"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xuexiangjys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"custom":"https://gitee.com/xuexiangjys/Resource/blob/master/doc/sponsor.md"}},"created_at":"2021-12-17T09:38:45.000Z","updated_at":"2023-12-22T15:24:46.000Z","dependencies_parsed_at":"2024-02-14T03:41:33.782Z","dependency_job_id":null,"html_url":"https://github.com/xuexiangjys/RxJava3Sample","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FRxJava3Sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FRxJava3Sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FRxJava3Sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuexiangjys%2FRxJava3Sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xuexiangjys","download_url":"https://codeload.github.com/xuexiangjys/RxJava3Sample/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224214878,"owners_count":17274700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rxjava","rxjava3","samples","x-samples"],"created_at":"2024-11-12T04:19:20.266Z","updated_at":"2024-11-12T04:19:20.770Z","avatar_url":"https://github.com/xuexiangjys.png","language":"Java","funding_links":["https://gitee.com/xuexiangjys/Resource/blob/master/doc/sponsor.md"],"categories":[],"sub_categories":[],"readme":"# RxJava3Sample\n\nRxJava3使用演示, 包含简介、例子、日志和源码等内容。\n\n## 关于我\n\n| 公众号   | 掘金     |  知乎    |  CSDN   |   简书   |   思否  |   哔哩哔哩  |   今日头条\n|---------|---------|--------- |---------|---------|---------|---------|---------|\n| [我的Android开源之旅](https://t.1yb.co/Irse)  |  [点我](https://juejin.im/user/598feef55188257d592e56ed/posts)    |   [点我](https://www.zhihu.com/people/xuexiangjys/posts)       |   [点我](https://xuexiangjys.blog.csdn.net/)  |   [点我](https://www.jianshu.com/u/6bf605575337)  |   [点我](https://segmentfault.com/u/xuexiangjys)  |   [点我](https://space.bilibili.com/483850585)  |   [点我](https://img.rruu.net/image/5ff34ff7b02dd)\n\n## 演示效果\n\n![demo.gif](https://s1.ax1x.com/2022/04/28/LjYtje.gif)\n\n## 发射器类型\n\n类型\t| 描述\n|---|---\nObservable\u003cT\u003e | 能够发射0或n个数据，并以成功或错误事件终止。\nFlowable\u003cT\u003e | 能够发射0或n个数据，并以成功或错误事件终止。支持Backpressure，可以控制数据源发射的速度。可由Observable转化而来。\nSingle\u003cT\u003e | 只发射单个数据或错误事件。只处理 onNext 和 onError 事件，没有onComplete。\nCompletable | 它从来不发射数据，只处理 onComplete 和 onError 事件。可以看成是Rx的Runnable。\nMaybe\u003cT\u003e | 能够发射0或者1个数据，要么成功，要么失败。类似Single和Completable的结合。如果处理了onNext 和 onError，那么就不处理onComplete。\n\n## Subject\n\n\u003e Subject 既是 Observable 又是 Observer(Subscriber)\n\n类型\t| 描述\n|---|---\nPublishSubject | 只能接收到订阅之后的所有数据\nBehaviorSubject | 接收到订阅前的最后一条数据和订阅后的所有数据\nAsyncSubject | 只接收到最后一条数据\nReplaySubject | 接收订阅前和订阅后的所有数据\nSerializedSubject | 线程安全的Subject，可由其他Subject调用toSerialized转换而来\n\n## 常用操作符\n\n类型\t| 操作符\n|---|---\n创建类型 | [create](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/creation/Create.java) 、[just](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/creation/Just.java) 、[timer](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/creation/Timer.java) 、[interval](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/creation/Interval.java) 、[from](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/creation/From.java) 、[error](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/creation/Error.java)\n转换类型 | [map](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/transformation/Map.java) 、[flatMap](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/transformation/FlatMap.java) 、[concatMap](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/transformation/ConcatMap.java) 、[switchMap](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/transformation/SwitchMap.java) 、[buffer](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/transformation/Buffer.java)\n过滤类型 | [filter](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/Filter.java) 、[ofType](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/OfType.java) 、[debounce](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/Debounce.java) 、[throttleWithTimeout](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/ThrottleWithTimeout.java) 、[distinct](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/Distinct.java) 、[distinctUntilChanged](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/DistinctUntilChanged.java) 、[first](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/First.java) 、[last](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/Last.java) 、[take](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/Take.java) 、[skip](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/filtering/Skip.java)\n结合类型 | [merge](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/combining/Merge.java)  、[zip](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/combining/Zip.java) 、[combineLatest](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/combining/CombineLatest.java)\n错误处理类型 | [retry](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/errorhandling/Retry.java) 、[onErrorResumeNext](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/errorhandling/OnErrorResumeNext.java)\n辅助操作类型 | [delay](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/utility/Delay.java) 、[subscribeOn](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/utility/SubscribeOn.java) 、[do](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/utility/Do.java) 、[to](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/utility/To.java) 、[timeout](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/utility/Timeout.java)\n条件和布尔类型 | [amb](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/conditional/Amb.java) 、[contains](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/conditional/Contains.java) 、[takeUntil](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/conditional/TakeUntil.java) 、[skipUntil](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/conditional/SkipUntil.java)\n算术和聚合类型 | [reduce](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/mathematical/Reduce.java) 、[max](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/mathematical/Max.java) 、[min](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/mathematical/Min.java) 、[sum](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/operators/mathematical/Sum.java)\n\n## Scheduler\n\n类型\t| 描述\n|---|---\nSchedulers.io | 缓存线程池，线程数量无穷大，用于I/O操作\nSchedulers.computation | 固定线程池，大小为CPU核数，用于CPU密集型计算（无阻塞）\nSchedulers.single | 单线程池\nSchedulers.newThread | 为指定任务启动一个新的线程\nSchedulers.trampoline | 当其它排队的任务完成后，在当前线程排队开始执行\nSchedulers.from | 使用指定的Executor作为调度器\nAndroidSchedulers.mainThread | Android的主线程，即UI线程\n\n## Plugins\n\n\u003e 插件，又可称Hook, 可以修改Rxjava的默认行为。\n\n使用RxJavaPlugins可以进行以下三类功能的Hook和自定义：\n\n* 发射器Observable、Single、Completable和Maybe的生命周期（装载和被订阅）。\n\n* Rxjava的各类线程调度器Scheduler。\n\n* Rxjava全局未处理的错误。\n\n## 使用案例\n\n* [UI相关使用案例](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxbinding)\n    * [快速点击](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxbinding/QuickClickFragment.java)\n    * [输入过滤](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxbinding/InputFilteringFragment.java)\n    * [联动刷新](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxbinding/LinkageRefreshFragment.java)\n\n* [常见通用使用案例](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxjava)\n    * [倒计时](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxjava/CountDownFragment.java)\n    * [线程切换](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxjava/ThreadSwitchFragment.java)\n    * [串行任务](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxjava/SerialTaskFragment.java)\n    * [无关联的并行任务](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxjava/UnrelatedConcurrentTaskFragment.java)\n    * [有关联的并行任务](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxjava/RelatedConcurrentTaskFragment.java)\n    * [直接执行线程任务](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxjava/SchedulerDirectFragment.java)\n\n* [缓存相关使用案例](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/cache)\n    * [缓存加载检测](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/cache/CacheLoadFragment.java)\n    * [缓存加载策略](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/cache/CacheStrategyFragment.java)\n\n* [RxBus使用案例](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxbus)\n    * [通过Subject实现RxBus的功能](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxbus/RxSubjectFragment.java)\n    * [RxBus工具类使用](https://github.com/xuexiangjys/RxJava3Sample/blob/master/app/src/main/java/com/xuexiang/rxjava3sample/fragment/usecase/rxbus/RxBusUtilsFragment.java)\n\n\n## 特别感谢\n\n* [RxDocs](https://github.com/mcxiaoke/RxDocs)\n* [中文文档](https://www.kancloud.cn/luponu/rxjava_zh/974447)\n* [RxJava Wiki](https://github.com/ReactiveX/rxjava/wiki)\n\n## 如果觉得项目还不错，可以考虑打赏一波\n\n\u003e 你的打赏是我维护的动力，我将会列出所有打赏人员的清单在下方作为凭证，打赏前请留下打赏项目的备注！\n\n![pay.png](https://raw.githubusercontent.com/xuexiangjys/Resource/master/img/pay/pay.png)\n\n## 联系方式\n\n\u003e 更多资讯内容，欢迎扫描关注我的个人微信公众号:【我的Android开源之旅】\n\n![](https://s1.ax1x.com/2022/04/27/LbGMJH.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuexiangjys%2Frxjava3sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxuexiangjys%2Frxjava3sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuexiangjys%2Frxjava3sample/lists"}