RxJava----简介
来源:互联网 发布:java内存限制 编辑:程序博客网 时间:2024/05/19 17:51
RxJava—GitHub地址
RxJava 简介
RxJava 是 ReactiveX 在 Java 上的开源的实现。主要有两个类:
Observable
(可观察者,即被观察者)和Subscriber
(订阅者 / 观察者)
Observable
是一个发出数据流或者事件的类
Subscriber
是一个对这些发出的 items(数据流或者事件)进行处理(采取行动)的类。
Observable
- 一个
Observable
的标准流发出一个或多个 item,然后成功完成或者出错。 - 一个
Observable
可以有多个Subscribers
Subscriber
Subscriber
是一个实现了Observer
的抽象类。Subscriber
对Observer
接口进行了一些扩展,但基本使用方式是完全一样的Observable
发出的item 将会被发送到Subscriber.onNext()
方法来进行处理- 一旦
Observable
不再发出 items,它将会调用Subscriber.onCompleted()
方法 - 如果有一个出错的话
Observable
会调用Subscriber.onError()
方法。
RxJava 的观察者模式
RxJava
有四个基本概念:Observable
(可观察者,即被观察者)Subscriber
(观察者subscribe
(订阅)- 事件
。
Observable
和Subscriber
通过subscribe()
方法实现订阅关系
。Observable
可以在需要的时候发出事件来通知Subscriber
。
与传统观察者模式不同, RxJava
的事件回调方法除了普通事件 onNext()
(相当于 onClick()
/onEvent()
)之外, 还定义了两个特殊的事件: onCompleted()
和 onError()
。
onCompleted()
: 事件队列完结。RxJava
不仅把每个事件单独处理,还会把它们看做一个队列。RxJava
规定,当不会再有新的onNext()
发出时,需要触发onCompleted()
方法作为标志。onError()
: 事件队列异常。在事件处理过程中出异常时,onError()
会被触发,同时队列自动终止,不允许再有事件发出。- 在一个正确运行的事件序列中,
onCompleted()
和onError()
有且只有一个,并且是事件序列中的最后一个。需要注意的是,onCompleted()
和onError()
二者也是互斥的,即在队列中调用了其中一个,就不应该再调用另一个。
使用场景
Rx 适合组合和消耗一系列的事件(数据)。
应当使用 Rx
- UI 事件响应,例如 鼠标移动、按钮点击事件
- Domain 事件,例如 属性改变、集合更新、订单提交、注册成功 等
- 基础架构事件,例如 文件监视、系统事件 等
- 集成事件,例如从一个消息队列来的一个广播;来自于 WebSockets API 的推送事件 等
- CEP 集成事件,例如 StreamInsight 或者 StreamBase.
可以使用 Rx
- Future 的结果或者类似的模式
这些模式已经工作的很好的,使用 Rx 在这些情况下对开发过程并不会有太多的提升。
不要使用 Rx
- 把 iterables 变成 observables, 只是为了在 Rx 库中使用它们。
基本讲解:
给 Android 开发者的 RxJava 详解—扔物线
RxJava 入门 - 傅圆的博客 | MrFu Blog
RxJava学习:
RxJava 教程第一部分:入门之 Why Rx - 云在千峰
RxJava Essentials 中文翻译版
Learning Reactive Programming with Java 8 中文翻译版
大头鬼的资料整理—-lzyzsd/Awesome-RxJava: RxJava resources
呼啸而过的专栏 - 博客频道 - CSDN.NET
RxJava - 大头鬼Bruce - 博客频道 - CSDN.NET
【译】使用RxJava从多个数据源获取数据 - 简书
【译】使用RxJava实现延迟订阅 - 简书
用工厂流水线的方式来理解 RxJava 的概念 - 泡在网上的日子
谜之RxJava (二) —— Magic Lift - Gemini @ SegmentFault - SegmentFault
Operators:
ReactiveX - Operators
RxJava操作符(一)Creating Observables-云少嘎嘎嘎-ChinaUnix博客
RxWeekend - 傅圆的博客 | MrFu Blog
谁来讲讲Rxjava、rxandroid中的操作符的作用? - 知乎
RxJava入门实践④ - 推酷
RxJava项目:
带你学开源项目:Meizhi Android之RxJava & Retrofit 最佳实践
【rxjava】rxjava开发,rxjava资源下载-CSDN.NET
jhusain/learnrxjava: A set of exercises to designed to teach developers Rx (Reactive Streams)
kaushikgopal/RxJava-Android-Samples: Learning RxJava for Android by example
halzhang/EverExample: example code
拓展:
kymjs/RxVolley: RxVolley = Volley + RxJava + OkHttp
[Android]基于RxJava、RxAndroid的EventBus实现 - 天天_byconan - 博客园
其他:
RxJava适用场景小结 - 程序人生 - 知乎专栏
Airbnb:我们的安卓客户端是如何使用 RxJava 的 - OPEN 开发经验库
Rx Android实战(重构项目) | 钟买能个人博客
使用RxJava来改进用户体验 - 泡在网上的日子
RxJava学习总结 - 推酷
Rx Android初步探究(一) | 钟买能个人博客
彻底搞懂 RxJava — 基础篇 | android blog
RxJava里doOnNext的使用和线程处理 - kyleada的专栏 - 博客频道 - CSDN.NET
Retrofit+RxJava实战日志 - 易凡的技术园地 - 博客频道 - CSDN.NET
RxJava 与 Retrofit 结合的最佳实践
迷之RxJava(四)—— Retrofit和RxJava的基情 - Gemini @ SegmentFault - SegmentFault
- RxJava----简介
- Rxjava 简介
- Rxjava简介
- RXJava 简介
- RxJava简介
- RxJava简介
- Rxjava简介
- RxJava使用简介
- RxJava系列1(简介)
- Dagger2+Retrofit2+Rxjava 简介
- RxJava系列1(简介)
- Rxjava简介(一)
- RxJava简介2
- RxJava系列1(简介)
- RxJava的简介
- RxJava之Scheduler简介
- RxJava——简介
- RxJava系列之二:RxJava简介
- 翻翻git之---SharedPreferences好用的封装库 PreferencesManager
- JavaScript的strict模式
- Oracle-BPM(一)
- UIViewContentMode 图片显示模式
- python ConfigParser模块详解
- RxJava----简介
- sysctl.conf中文参数指南
- win7iis配置
- Hive Alter Table
- 谨防raid数据丢失不当操作及raid数据恢复方法
- 谈谈java的"=="和equals
- Git常用命令和Git团队使用规范指南
- 关于宏的一些问题,和__LINE__,__FILE__一些编辑器默认宏
- Spring体系知识点IOC,AOP