初識RxJava(一)建立類 操作符
阿新 • • 發佈:2018-11-10
前言:
眾所周知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:");
}
});
}