RxJava 是 ReactiveX 在 Java 上的开源的实现。主要有两个类:
Observable
(可观察者,即被观察者)和Subscriber
(订阅者 / 观察者)
Observable
是一个发出数据流或者事件的类
Subscriber
是一个对这些发出的 items(数据流或者事件)进行处理(采取行动)的类。
Observable
的标准流发出一个或多个 item,然后成功完成或者出错。Observable
可以有多个 Subscribers
Subscriber
是一个实现了 Observer
的抽象类。 Subscriber
对 Observer
接口进行了一些扩展,但基本使用方式是完全一样的Observable
发出的item 将会被发送到Subscriber.onNext()
方法来进行处理Observable
不再发出 items,它将会调用 Subscriber.onCompleted()
方法Observable
会调用 Subscriber.onError()
方法。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 适合组合和消耗一系列的事件(数据)。
基本讲解:
给 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