這篇文章主要介紹了RxJava 2.x新特性的相關資料,文中透過圖文及範例程式碼介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
什麼是RxJava
Rx是非同步響應式程式設計的意思,本質是觀察者模式,以觀察者和訂閱者的非同步響應式程式設計。
本文主要介紹了RxJava 2.x新功能的相關資料,以下話不多說,來看看詳細的介紹吧。
背壓的分離
#Flowable/Subscriber
Flowable.range(0,10) .subscribe(new Subscriber<Integer>() { Subscription sub; //当订阅后,会首先调用这个方法,其实就相当于onStart(), //传入的Subscription s参数可以用于请求数据或者取消订阅 @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
根據上面的程式碼的結果輸出可以看到,當我們呼叫subscription.request(n)
方法的時候,不等onSubscribe()
中後面的程式碼執行,就會立刻執行到onNext方法,因此,如果你在onNext方法中使用到需要初始化的類別時,應盡量在subscription.request(n)
這個方法呼叫之前做好初始化的工作;
#另外一種創建方法
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
以上三種類似, 比較適合發送單一資料, 並不適合發送大量資料.
//判断是否登陆 Maybe.just(isLogin()) //可能涉及到IO操作,放在子线程 .subscribeOn(Schedulers.newThread()) //取回结果传到主线程 .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() { } });
實際上,這種觀察者模式並不用於發送大量數據,而是發送單一數據,也就是說,當你只想要某個事件的結果(true or false)的時候,你可以用這種觀察者模式
Action
Rx1.0———–Rx2.0
Action1——–Action
###########################################都## ########################################################### ##########################################總結######### #
以上是RxJava 2.x新特性總結整理的圖文介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!