前言:
衆所周知RxJava是個好東西,至于好在哪裡大家相信大家都看過了百度出來的第一篇文章就是 抛物線的這篇文章
《給 Android 開發者的 RxJava 詳解》,這篇文章很好,但是像我一樣的讀得懵懵懂懂得人應該也是大有人在吧,而且是關于RxJava 1.0版本的,現在已經是Rxjava 2.0 時代了,好多東西已經發生了變化,那麼我推薦各位看這位大佬 Season_zlc 的文章,寫的賊棒,筆者是折服了 ,專題連結:
RxJava2.x。但是筆者認為讀了這些還不夠,RxJava 還有大量的操作符需要我們進行探索,不太監了,筆者為大家帶來關于 RxJava 的各種操作符的相關筆記,共勉,共勉。
正題:
開篇一張圖,剩下的全靠編。。。而且圖還是盜圖 。╮(╯﹏╰)╭
筆者的筆記是基于 RxJava 2.0 入手,不研究源碼,因為筆者水準不夠,會用就好了嘛,嘿嘿嘿!首先,先引入依賴 :
RxJavaimplementation '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)、作用
直接發送 傳入的數組資料(逐一發送) 相當于周遊
/**
* 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 操作符
直接發送 傳入的集合 List 内資料(相當于周遊)
/**
*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:");
}
});
}