RxJava 2.x新特性總結(jié)整理
什么是RxJava
Rx是異步響應(yīng)式編程的意思,本質(zhì)是觀察者模式,以觀察者和訂閱者的異步響應(yīng)式編程。
本文主要介紹了關(guān)于RxJava 2.x新特性的相關(guān)資料,下面話不多說(shuō),來(lái)看看詳細(xì)的介紹吧。
背壓的分離
Flowable/Subscriber
Flowable.range(0,10) .subscribe(new Subscriber<Integer>() { Subscription sub; //當(dāng)訂閱后,會(huì)首先調(diào)用這個(gè)方法,其實(shí)就相當(dāng)于onStart(), //傳入的Subscription s參數(shù)可以用于請(qǐng)求數(shù)據(jù)或者取消訂閱 @Override public void onSubscribe(Subscription s) { Log.w("TAG","onsubscribe start"); sub=s; sub.request(1); Log.w("TAG","onsubscribe end"); } @Override public void onNext(Integer o) { Log.w("TAG","onNext--->"+o); sub.request(1); } @Override public void onError(Throwable t) { t.printStackTrace(); } @Override public void onComplete() { Log.w("TAG","onComplete"); } });
輸出:
onsubscribe start onNext--->0 onNext--->1 onNext--->2 ... onNext--->10 onComplete onsubscribe end
根據(jù)上面的代碼的結(jié)果輸出中可以看到,當(dāng)我們調(diào)用subscription.request(n)
方法的時(shí)候,不等onSubscribe()
中后面的代碼執(zhí)行,就會(huì)立刻執(zhí)行到onNext方法,因此,如果你在onNext方法中使用到需要初始化的類(lèi)時(shí),應(yīng)當(dāng)盡量在subscription.request(n)
這個(gè)方法調(diào)用之前做好初始化的工作;
另外一種創(chuàng)建方法
Flowable.create(new FlowableOnSubscribe<Integer>() { @Override public void subscribe(FlowableEmitter<Integer> e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); e.onNext(4); e.onComplete(); } } //需要指定背壓策略 , BackpressureStrategy.BUFFER);
其他觀察者模式
- Single/SingleObserver
- Completable/CompletableObserver
- Maybe/MaybeObserver
以上三種類(lèi)似, 比較適合發(fā)送單個(gè)數(shù)據(jù), 并不適合發(fā)送大量數(shù)據(jù).
//判斷是否登陸 Maybe.just(isLogin()) //可能涉及到IO操作,放在子線程 .subscribeOn(Schedulers.newThread()) //取回結(jié)果傳到主線程 .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MaybeObserver<Boolean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onSuccess(Boolean value) { if(value){ ... }else{ ... } } @Override public void onError(Throwable e) { } @Override public void onComplete() { } });
實(shí)際上,這種觀察者模式并不用于發(fā)送大量數(shù)據(jù),而是發(fā)送單個(gè)數(shù)據(jù),也就是說(shuō),當(dāng)你只想要某個(gè)事件的結(jié)果(true or false)的時(shí)候,你可以用這種觀察者模式
Action
Rx1.0———–Rx2.0
Action1——–Action
Action1——–Consumer
Action2——–BiConsumer
后面的Action都去掉了,只保留了ActionN
參考
總結(jié)
以上就是關(guān)于RxJava 2.x新特性的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Android開(kāi)發(fā)實(shí)現(xiàn)TextView超鏈接5種方式源碼實(shí)例
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)TextView超鏈接5種方式源碼實(shí)例,需要的朋友可以參考下2020-03-03Android Dialog 設(shè)置字體大小的具體方法
這篇文章介紹了Android Dialog 設(shè)置字體大小的具體方法,希望能幫助到有同樣需求的朋友,可能我的方法不是最好的,也希望有朋友指點(diǎn)2013-09-09藍(lán)牙原理Android代碼實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了藍(lán)牙原理Android代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09Android使用Spinner實(shí)現(xiàn)城市級(jí)聯(lián)下拉框
這篇文章主要為大家詳細(xì)介紹了Android使用Spinner實(shí)現(xiàn)城市級(jí)聯(lián)下拉框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Android優(yōu)化方案之Fragment的懶加載實(shí)現(xiàn)代碼
本篇文章主要介紹了Android優(yōu)化方案之Fragment的懶加載實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03android圖像繪制(三)畫(huà)布刷屏問(wèn)題記錄
在canvas中繪制動(dòng)態(tài)圖的時(shí)候,如果使用了一個(gè)固定的背景圖片,只有一個(gè)小小的精靈在移動(dòng)!這樣的情況下卻不得不在沒(méi)幀中重新繪制背景圖片,使得效率降低,本文章只是記錄一下,并不是解決方法感興趣的朋友可以了解下2013-01-01靈活使用Android中ActionBar和ViewPager切換頁(yè)面
這篇文章主要介紹了如何靈活使用Android中ActionBar和ViewPager切換頁(yè)面,感興趣的小伙伴們可以參考一下2015-12-12RecycleView實(shí)現(xiàn)各種尺寸圖片展示
這篇文章主要為大家詳細(xì)介紹了RecycleView實(shí)現(xiàn)各種尺寸圖片展示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05