欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:android RxJava

柚子快報(bào)邀請(qǐng)碼778899分享:android RxJava

http://yzkb.51969.com/

一、RxJava簡(jiǎn)介

1.RxJava

Reactive Extensions for the JVM,基于JVM的Rx。 Reactive Extensions(Rx)原來(lái)是由微軟提出的一個(gè)綜合了異步和基于事件驅(qū)動(dòng)編程的庫(kù)。

RxJava的核心就是異步數(shù)據(jù)流和響應(yīng)式編程: 1把所有的事件(數(shù)據(jù))看成一條河流,它可以被觀察、過(guò)濾或操作,也可以和另外一條河流匯合成一條新的河流。 2一旦事件產(chǎn)生或發(fā)生變化,就可以觸發(fā)觀察這些事件的角色(觀察者/訂閱者)做出響應(yīng)處理。

2.RxJava優(yōu)勢(shì)及適用場(chǎng)景

RxJava當(dāng)然是優(yōu)秀而且強(qiáng)大的,有以下優(yōu)勢(shì): 1具備響應(yīng)式編程該有的特性。 2為異步而生,無(wú)需手動(dòng)創(chuàng)建線程,并具備線程切換能力。 3支持鏈?zhǔn)秸{(diào)用,保證代碼的簡(jiǎn)潔性。 4各種操作符,功能非常強(qiáng)大,滿足各種業(yè)務(wù)需求。 5簡(jiǎn)化了異常的處理。 RxJava適用場(chǎng)景:網(wǎng)絡(luò)請(qǐng)求、數(shù)據(jù)庫(kù)讀寫(xiě)、文件讀寫(xiě)、定時(shí)任務(wù)等各種耗時(shí)操作需要通過(guò)異步來(lái)完成的操作都可以使用RxJava。

3.RxJava幾個(gè)重要概念

觀察者:Observer,觀察事件變化并處理的主要角色。消費(fèi)者(Consumer)也可以理解成―種特殊的觀察者。 被觀察者:觸發(fā)事件并決定什么時(shí)候發(fā)送事件的主要角色。(異常和完成也是一種事件) 1Observable、Flowable、Single、Completable、Maybe都是被觀察者。 2Flowable是支持背壓的一種被觀察者。 3Single、Completable、Maybe是簡(jiǎn)化版的Observable。 4幾種被觀察者通過(guò)toObservable/toFlowable/toSingle/toCompletable/toMaybe相互轉(zhuǎn)換。 訂閱(subscribe):觀察者和被觀察者建立關(guān)聯(lián)的操作。

二、RxJava實(shí)操

1.導(dǎo)庫(kù)

注:查找對(duì)應(yīng)庫(kù)的地址:https://mvnrepository.com/

// https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxjava

implementation 'io.reactivex.rxjava2:rxjava:2.2.21'

// https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxandroid

implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

2.create — 被觀察者與觀察者

private void createOperatorTest() {

Observable.create(new ObservableOnSubscribe() { //被觀察者

@Override

public void subscribe(ObservableEmitter emitter) throws Exception {

//事件產(chǎn)生的地方

emitter.onNext("Observable test_01");

emitter.onNext("Observable test_02");

emitter.onNext("Observable test_03");

//emitter.onError(new Throwable("Manual Error!"));

emitter.onComplete();

}

}).subscribe(new Observer() { //觀察者

@Override

public void onSubscribe(Disposable d) {

System.out.println("Observer onSubscribe");

}

@Override

public void onNext(Object o) {

System.out.println("Observer onNext o: " + o);

}

@Override

public void onError(Throwable e) {

System.out.println("Observer onError: " + e.toString());

}

@Override

public void onComplete() {

System.out.println("Observer onComplete");

}

});

}

執(zhí)行結(jié)果: 注:onError與onComplete方法互斥,如果被觀察者兩個(gè)事件都包含,兩個(gè)事件都會(huì)被執(zhí)行,但是觀察者只能觀察到先執(zhí)行的那個(gè)事件。

3.create — 被觀察者與消費(fèi)者

private void createOperatorTest() {

Observable.create(new ObservableOnSubscribe() { //被觀察者

@Override

public void subscribe(ObservableEmitter emitter) throws Exception {

//事件產(chǎn)生的地方

emitter.onNext("Observable test_01");

emitter.onNext("Observable test_02");

emitter.onNext("Observable test_03");

// emitter.onComplete();

emitter.onError(new Throwable("Manual Error!"));

}

}).subscribe(new Consumer() {

@Override

public void accept(Object o) throws Exception {

System.out.println("Consumer o: " + o);

}

}, new Consumer() {

@Override

public void accept(Throwable throwable) throws Exception {

System.out.println("Consumer throwable:"+throwable.toString());

}

});

}

執(zhí)行結(jié)果:

3.just — 被觀察者與觀察者

Just操作符最多能傳10個(gè)參數(shù)。

private void justOperatorTest(){

Observable.just("msg_01", "msg_02", "msg_03")

.subscribe(new Observer() { //觀察者

@Override

public void onSubscribe(Disposable d) {

System.out.println("Observer onSubscribe");

}

@Override

public void onNext(Object o) {

System.out.println("Observer onNext o: " + o);

}

@Override

public void onError(Throwable e) {

System.out.println("Observer onError: " + e.toString());

}

@Override

public void onComplete() {

System.out.println("Observer onComplete");

}

});

}

執(zhí)行結(jié)果:

4.from

public static Observable fromArray(T… items); fromArray方法不限制傳入?yún)?shù)的個(gè)數(shù),just方法內(nèi)部也是使用的fromArray。

Observable.fromArray("msg_01", "msg_02", "msg_03", "msg_04", "msg_05", "msg_06", "msg_07", "msg_08", "msg_09", "msg_10", "msg_11")

.subscribe(myObserver);

執(zhí)行結(jié)果: public static Observable fromIterable(Iterable source); 可以傳入實(shí)現(xiàn)了Iterable接口的類(lèi)型值。

ArrayList list = new ArrayList<>();

list.add("msg_01");

list.add("msg_02");

list.add("msg_03");

Observable.fromIterable(list)

.subscribe(myObserver);

5.map

map: 對(duì)被觀察者傳入的事件進(jìn)行處理,返回一個(gè)新的被觀察者。

Observable.just("msg_01", "msg_02")

.map(new Function() {

@Override

public Object apply(String s) throws Exception {

System.out.println("Function apply " + s);

return "fun_msg";

}

}).subscribe(myObserver);

6.flatMap

多線程無(wú)序

Observable.just("msg_01", "msg_02")

.flatMap(new Function>() {

@Override

public ObservableSource apply(String s) throws Exception {

System.out.println("Function apply " + s);

return Observable.just("apply_msg_01", "apply_msg_02");

}

}).subscribe(myObserver);

7.concatMap

有序

Observable.just("msg_01", "msg_02")

.concatMap(new Function>() {

@Override

public ObservableSource apply(String s) throws Exception {

System.out.println("Function apply " + s);

return Observable.just("apply_msg_01", "apply_msg_02");

}

}).subscribe(myObserver);

8.buffer

Observable.just("msg_01", "msg_02", "msg_03",

"msg_04", "msg_05", "msg_06", "msg_07")

.buffer(3).subscribe(myObserver);

柚子快報(bào)邀請(qǐng)碼778899分享:android RxJava

http://yzkb.51969.com/

精彩文章

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19130882.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄