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

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:android RxJava

柚子快報邀請碼778899分享:android RxJava

http://yzkb.51969.com/

一、RxJava簡介

1.RxJava

Reactive Extensions for the JVM,基于JVM的Rx。 Reactive Extensions(Rx)原來是由微軟提出的一個綜合了異步和基于事件驅動編程的庫。

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

2.RxJava優(yōu)勢及適用場景

RxJava當然是優(yōu)秀而且強大的,有以下優(yōu)勢: 1具備響應式編程該有的特性。 2為異步而生,無需手動創(chuàng)建線程,并具備線程切換能力。 3支持鏈式調用,保證代碼的簡潔性。 4各種操作符,功能非常強大,滿足各種業(yè)務需求。 5簡化了異常的處理。 RxJava適用場景:網絡請求、數據庫讀寫、文件讀寫、定時任務等各種耗時操作需要通過異步來完成的操作都可以使用RxJava。

3.RxJava幾個重要概念

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

二、RxJava實操

1.導庫

注:查找對應庫的地址: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 {

//事件產生的地方

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í)行結果: 注:onError與onComplete方法互斥,如果被觀察者兩個事件都包含,兩個事件都會被執(zhí)行,但是觀察者只能觀察到先執(zhí)行的那個事件。

3.create — 被觀察者與消費者

private void createOperatorTest() {

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

@Override

public void subscribe(ObservableEmitter emitter) throws Exception {

//事件產生的地方

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í)行結果:

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

Just操作符最多能傳10個參數。

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í)行結果:

4.from

public static Observable fromArray(T… items); fromArray方法不限制傳入參數的個數,just方法內部也是使用的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í)行結果: public static Observable fromIterable(Iterable source); 可以傳入實現了Iterable接口的類型值。

ArrayList list = new ArrayList<>();

list.add("msg_01");

list.add("msg_02");

list.add("msg_03");

Observable.fromIterable(list)

.subscribe(myObserver);

5.map

map: 對被觀察者傳入的事件進行處理,返回一個新的被觀察者。

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

多線程無序

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);

柚子快報邀請碼778899分享:android RxJava

http://yzkb.51969.com/

精彩文章

評論可見,查看隱藏內容

本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉載請注明,如有侵權,聯系刪除。

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

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄