RxJava分析

来源:互联网 发布:sql server2008和2016 编辑:程序博客网 时间:2024/05/22 11:31

RxJava功能

主要是实现异步操作的库,别的定语都在异步操作定义之上;


RxJava优势

简洁,可读性强,后期维护方面;代码逻辑清晰,主线程与非主线程切换方便,能满足响应式需求

 

RxJava原理

通过扩展的观察者模式实现的;


普通观察者模式原理:(Button -> 被观察者、OnClickListener -> 观察者、setOnClickListener() -> 订阅,onClick() -> 事件);


RxJava观察者模式原理

Observable(被观察转者),Observer(观察者),Subscribe(订阅)事件,Observable和Observer通过Subscribe()方法实现订阅,从而使Observable在必要的时候通知Observer;


RxJava观察者模式特点

除了普通的onNext回调方法还有两个特殊的方法,onCompleted(事件完结触发),和onError(事件异常触发);


RxJava实现三步:

第一:创建Observer

创建Observer(观察者)决定事件触发以后的行为或者创建Subscriber对象Subscriber是对Observer接口进行了一些扩展

1.onStar()方法,但是该方法是异步的不可更新ui,更新ui使用;

2.doOnSubscribe()方法,更新ui;

3.unSubscribe()方法,取消订阅;

4.isUnSubscribed()方法,判断当前的订阅状态;


第二:创建Observable对象

1.调用Observable.create()方法创建Observable对象,参数为Observable.OnSubscribe<?>()接口,返回值为Observable;

2.调用Observable.just(T...)创建Observable对象;

3.调用Observable.form(Iterable<? extends T>))创建Observable对象

 

第三:调用Observable.Subscriabe()实现观察者Observer对被观察者Observable的订阅

注意:

订阅结束之后,Observable.subscribe(Subscriber)底层执行循序:

1.Subscriber.onStart();

2.OnSubscribe.call();

3.传入的Subscriber返回方便unsubscribe();