前言:
众所周知RxJava是个好东西,至于好在哪里大家相信大家都看过了百度出来的第一篇文章就是 抛物线的这篇文章 《给 Android 开发者的 RxJava 详解》,这篇文章很好,但是像我一样的读得懵懵懂懂得人应该也是大有人在吧,而且是关于RxJava 1.0版本的,现在已经是Rxjava 2.0 时代了,好多东西已经发生了变化,那么我推荐各位看这位大佬 Season_zlc 的文章,写的贼棒,笔者是折服了 ,专题链接:RxJava2.x 。但是笔者认为读了这些还不够,RxJava 还有大量的操作符需要我们进行探索,不太监了,笔者为大家带来关于 RxJava 的各种操作符的相关笔记,共勉,共勉。
正题:
开篇一张图,剩下的全靠编。。。而且图还是盗图 。╮(╯﹏╰)╭
笔者的笔记是基于 RxJava 2.0 入手,不研究源码,因为笔者水平不够,会用就好了嘛,嘿嘿嘿!首先,先引入依赖 : RxJava
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
1、create 基本创建符
1)、基础写法
//创建被观察者
Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
logDUtils("observable onNext:1");
emitter.onNext(1);
logDUtils("observable onNext:2");
emitter.onNext(2);
logDUtils("observable onNext:3");
emitter.onNext(3);
logDUtils("observable onNext:4");
emitter.onNext(4);
logDUtils("observable onComplete");
emitter.onComplete();
logDUtils("observable onNext:5");
emitter.onNext(5);
}
});
//创建观察者
Observer<Integer> observer = new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
logDUtils("onSubscribe:" + d.toString());
}
@Override
public void onNext(Integer integer) {
logDUtils("onNext:" + integer);
}
@Override
public void onError(Throwable e) {
logDUtils("onError:" + e.getMessage());
}
@Override
public void onComplete() {
logDUtils("onComplete:");
}
};
//进行订阅
observable.subscribe(observer);
2)、链式调用
private void createMethod() {
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
//创建被观察对象
emitter.onNext(1);
//结束发送
emitter.onComplete();
}
}).subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
//接收被观察对象发送的 对象
}
@Override
public void onError(Throwable e) {
//接收 onError 事件 ,做出相应反应
}
@Override
public void onComplete() {
//事件处理完成,做出相应处理
}
});
}
3)、作用
完整创建1个被观察者对象(Observable)
属于 RxJava 最基本的创建符
2、just 快速创建符
1)、作用
创建1个被观察者对象
直接发送 传入的事件(逐一发送)
最多只能发送 10 个事件
2)、代码
private void justMethod() {
Observable.just(1,2,3,4,5).subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
logDUtils("onSubscribe:" );
}
@Override
public void onNext(Integer integer) {
logDUtils("onNext:" + integer);
}
@Override
public void onError(Throwable e) {
logDUtils("onError:" + e.getMessage());
}
@Override
public void onComplete() {
logDUtils("onComplete:");
}
});
}
3、fromeArray 发送数组内数据
1)、作用
创建1个被观察者对象
直接发送 传入的数组数据(逐一发送) 相当于遍历
2)、代码
/**
* fromArray 操作符
*/
private void arrayMethod() {
String str[] = {"AAA", "BBB", "CCC", "DDD"};
Observable.fromArray(str).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
logDUtils("onSubscribe:");
}
@Override
public void onNext(String s) {
logDUtils("onNext:" + s);
}
@Override
public void onError(Throwable e) {
logDUtils("onError:" + e.getMessage());
}
@Override
public void onComplete() {
logDUtils("onComplete:");
}
});
}
3)、效果
4、fromIterable 操作符
1)、作用
创建1个被观察者对象
直接发送 传入的集合 List 内数据(相当于遍历)
2)、代码
/**
*fromIterable 操作符
*/
private void listMethod() {
ArrayList<String> list = new ArrayList<>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
Observable.fromIterable(list).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
logDUtils("onSubscribe:");
}
@Override
public void onNext(String s) {
logDUtils("onNext:" + s);
}
@Override
public void onError(Throwable e) {
logDUtils("onError:" + e.getMessage());
}
@Override
public void onComplete() {
logDUtils("onComplete:");
}
});
}