一、RxJava2介绍
RxJava2.0是非常好用的一个异步链式库,遵循观察者模式。
应用场景
所有的异步都可以用RxJava来做就可以了,尤其是复杂的场景,越是复杂的场景越能体现RxJava的好处。
与Retrofit联用。
二、RxJava2 的使用步骤
1、创建被观察者
Observable novel=Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("连载1");
emitter.onNext("连载2");
emitter.onNext("连载3");
emitter.onComplete();
}
});
ObservableEmitter有三种发射的方法,分别是void onNext(T value)、void onError(Throwable error)、void onComplete()
onNext方法可以无限调用,Observer(观察者)所有的都能接收到。
onError和onComplete是互斥的,Observer(观察者)只能接收到一个,OnComplete可以重复调用,但是Observer(观察者)只会接收一次,而onError不可以重复调用,第二次调用就会报异常。
2、创建观察者
Observer<String> reader=new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
mDisposable=d;
Log.e(TAG,"onSubscribe");
}
@Override
public void onNext(String value) {
if ("2".equals(value)){
mDisposable.dispose(); //取消订阅
return;
}
Log.e(TAG,"onNext:"+value);
}
@Override
public void onError(Throwable e) {
Log.e(TAG,"onError="+e.getMessage());
}
@Override
public void onComplete() {
Log.e(TAG,"onComplete()");
}
};
3、观察者和被观察者建立关系
novel.observeOn(AndroidSchedulers.mainThread()) //回调在主线程
.subscribeOn(Schedulers.io()) //执行在io线程
.subscribe(reader); //建立关系
参考链接 https://www.jianshu.com/p/cd3557b1a474