1.什么是RxJava(ReactiveX.io链式编程)
(1)定义:
一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。
总结:RxJava 是一个 基于事件流、实现异步操作的库
理解:RXJava是一个响应式编程框架 ,采用观察者设计模式,观察者模式本身的目的就是『后台处理,前台回调』的异步机制
(2)优点:
由于 RxJava是基于事件流的链式调用,所以使得 RxJava:
逻辑简洁
实现优雅
使用简单
(3)作用:
实现异步操作
类似于 Android中的 AsyncTask 、Handler作用
2.观察者模式
(1)定义:
在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。
(2)理解:
其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。
(3)使用场景:
有一个微信公众号服务,不定时发布一些消息,关注公众号就可以收到推送消息,取消关注就收不到推送消息。
3.Rxjava基本概念(观察者模式)
案例:按钮点击处理、广播注册
通过setOnClickListener()方法,Button持有OnClickListener的引用;当用户击时,Button自动调用OnClickListener的onClick()方法。
Button——>被观察者
OnClickListener——>观察者
setOnClickListener ——>订阅
onClick ——>事件
4. RxJava 有3个基本概念及原理
1.Observable(被观察者)
2.Observer(观察者)
3.subscribe(订阅)事件。
(1)原理:
被观察者(Observable)通过 订阅(Subscribe)按顺序发送事件 给观察者(Observer), 观察者(Observer)按顺序接收事件 & 作出对应的响应动作。
(2)普通事件 :
onNext() 接收被观察者发送的消息
(3)特殊的事件:
onCompleted() 事件队列完结
onError () 事件队列异常
注意:
1)RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。
2)RxJava 规定,onNext() 接收被观察者发送的消息、可以执行多次;当不会再有新的 onNext () 发出时,需要触发 onCompleted () 方法作为标志。onError():事件队列异常。在事件处理过程中出异常时,onError() 会被触发,同时队列自动终止,不允许再有事件发出。
3)在一个正确运行的事件序列中, onCompleted() 和 onError () 有且只有一个,并且是事件序列中的最后一个。
4)需要注意的是,onCompleted()和 onError () 二者也是互斥的,即在队列中调用了其中一个,就不应该再调用另一个。