国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

RxJava 2.x新特性總結整理

2019-12-12 03:14:06
字體:
來源:轉載
供稿:網友

什么是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 startonNext--->0onNext--->1onNext--->2...onNext--->10onCompleteonsubscribe 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―――

主站蜘蛛池模板: 威远县| 车险| 清河县| 宁津县| 慈利县| 南乐县| 浮山县| 永德县| 泗洪县| 晋城| 康保县| 遵化市| 教育| 安乡县| 台南市| 马边| 正阳县| 松江区| 射洪县| 五常市| 天柱县| 安国市| 潍坊市| 秀山| 安仁县| 武汉市| 汝南县| 泗阳县| 信丰县| 东兰县| 无棣县| 南平市| 常熟市| 富阳市| 永德县| 刚察县| 连南| 鄂伦春自治旗| 东山县| 东山县| 吉林市|