RxJava(二、Concept)
2016-08-23 本文已影响72人
敲代码的本愿
目录
一、Is what 是什么
二、Concept 概念
三、Basic realization 基本实现
四、Scheduler 线程控制(上)
五、Scheduler 线程控制(下)
六、变换
因个人学习需要,故文章内容均为网上摘抄整理,感谢创作者的辛勤,源文章地址请看文末。
概念
RxJava
的异步实现,是通过一种 扩展的观察者模式 来实现的。
什么是观察者模式?
即:A对象(观察者)对B对象(被观察者)的某种变化高度敏感,在B变化的瞬间做出反应。
举个栗子:
View
的点击事件。
通过 setOnClickListener()
方法,View
持有 onClickListener
的引用,当点击时,View
自动调用 onClickListener
的 onClick()
方法。
若将概念抽象出来(如下),就由专用的观察者模式转变为通用的观察者模式。(专用到通用的理解:对思想逻辑的学习复用)
View --> 被观察者
OnClickListener --> 观察者
setOnClickListener() --> 订阅
onClick() --> 事件
RxJava
作为一个工具库,使用的就是通用形式的观察者模式。
注意:
RxJava
中,如果一个Observerble
(被观察者)没有任何的的Subscriber
(订阅者,即:订阅了事件的观察者),那么这个Observable
不会发出任何事件)。
四个概念
Observable
(被观察者)Observer
(观察者)subscribe()
(订阅)-
事件。
Observable
和Observer
通过subscribe()
方法实现订阅关系,从而Observable
可以在需要的时候发出事件来通知Observer
。
三个事件回调方法
-
onNext()
:普通队列事件。类似onClick()
。 -
onCompleted()
:事件队列完结。RxJava
不仅把每个事件单独处理,还会把它们看作成一个队列。并规定,当不会再有新的onNext()
发出时,需要触发onCompleted()
作为标志。 -
onError()
:事件队列异常。在事件处理过程中出现异常,onError()
会被触发,同时队列自动终止,不允许再有事件发出。
RxJava观察者模式注意:在一个正确运行的事件序列中,
onCompleted()
和onError()
有且只有一个,并且是事件序列中的最后一个。同时,二者也是互斥关系,即在队列中调用了其中一个,就不应该再调用另外一个。