RxJava2是一套处理非同步(asynchronous)事件的library,这个library是基於观察者的模式来设计的。
观察者模式
定义了物件之间的一对多关系,如此一来,当一个物件改变状态,其他相依者都会收到通知并自动被更新
举例来说:大家在youtube看影片时,都会订阅一些自己喜欢看的youtuber的影片,假设该youtuber为被观察者,而自己是观察者,平时不会特别去关注该youtuber的影片是否更新,但只要当该youtuber有新的影片,有订阅该youtuber的人都会收到通知。
RxJava优点
1.方便的处理线程切换的问题
2.当逻辑代码越来越复杂,RxJava仍可保持可读性
RxJava基本使用
第一步:加入套件
implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
第二步:创建Observable(被观察者)
Observable<String> note=Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
//ObservableEmitter:Emitter翻为发送器,发送讯息,有三种发送方法:void onNext(T value)、onError(Throwable error)、onComplete()
emitter.onNext("Hello");
emitter.onNext("This is Eles's note");
emitter.onNext("Thanks for watching");
emitter.onComplete();
}
});
第三步:创建Observer(观察者)
Observer<String> reader =new Observer<String>() {
@Override
public void onSubscribe(Disposable d) { //事件还未发送前先调用,Disposable可用来做取消订阅
Log.d(TAG,"onSubscribe:");
}
@Override
public void onNext(String s) { //处理的事件
Log.d(TAG,"onNext:"+ s);
}
@Override
public void onError(Throwable e) { //事件处理过程中出现异常情况时,会调用onError(),同时终止事件发送
Log.d(TAG,"onError:"+ e);
}
@Override
public void onComplete() { //事件处理完成,当onNext()发送完毕後调用
Log.d(TAG,"onComplete()");
}
};
第四步:创建subscribe(建立订阅关系)
note.subscribe(reader); //note被reader订阅
log结果
明天会补充rxjava其余部分
<<: Day23,替你的Gitlab pipeline 添加点搞事
前言 非同步一直是困扰着 Javascript 新手的小魔王,以前常常会有「为什麽这行先跑到没有先执...
在写网页时,前端的工程师需要了解如何与後端或是其他的第三方服务沟通,在看了文件後,除了直接实作外,另...
虽然这章节可能有些无聊,迟迟没进入CSS引人兴趣的地方, 但我还是想依我学习时,所想到和纳闷的事物按...
本篇介绍伪类中的状态选取器:checked应用篇:做一个开关按钮 :checked介绍 :chec...
变数 在程序中用来 暂存 资料和数值的物件(以後再讲物件是甚麽,挖坑+1),有点类似数学中的未知数 ...