RxJava 2.x新特性總結(jié)整理
什么是RxJava
Rx是異步響應(yīng)式編程的意思,本質(zhì)是觀察者模式,以觀察者和訂閱者的異步響應(yīng)式編程。
本文主要介紹了關(guān)于RxJava 2.x新特性的相關(guān)資料,下面話不多說,來看看詳細(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方法中使用到需要初始化的類時(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
以上三種類似, 比較適合發(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ù),也就是說,當(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í)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Crashlytics Android 異常報(bào)告統(tǒng)計(jì)管理(詳解)
下面小編就為大家?guī)硪黄狢rashlytics Android 異常報(bào)告統(tǒng)計(jì)管理(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Android仿eleme點(diǎn)餐頁面二級(jí)聯(lián)動(dòng)列表
本站一直在點(diǎn)外賣,于是心血來潮就像仿餓了么做個(gè)站,接下來通過本文給大家介紹android 二級(jí)聯(lián)動(dòng)列表,仿eleme點(diǎn)餐頁面的相關(guān)資料,需要的朋友可以參考下2016-10-10
Android 中 android.view.WindowLeaked的解決辦法
這篇文章主要介紹了Android 中 android.view.WindowLeaked的解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android四大組件之BroadcastReceiver詳解
今天小編就為大家分享一篇關(guān)于Android四大組件之BroadcastReceiver詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01
Kotlin Extension Function擴(kuò)展函數(shù)詳細(xì)介紹
Kotlin支持使用新功能擴(kuò)展類的能力,而無需通過類實(shí)現(xiàn)繼承概念或使用設(shè)計(jì)模式,如裝飾器(Decorator)。這是通過稱為擴(kuò)展功能(Extension Function)的特殊方式來完成的。因此,此功能可以有效地使代碼變得更清晰和易于閱讀,并且還可以減少代碼2023-02-02
Android實(shí)現(xiàn)滾動(dòng)刻度尺效果
本篇文章主要介紹了Android實(shí)現(xiàn)滾動(dòng)刻度尺效果,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05

