91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RxJava 2.x新特性總結整理

發布時間:2020-10-25 07:53:45 來源:腳本之家 閱讀:180 作者:kkooff144 欄目:移動開發

什么是RxJava

Rx是異步響應式編程的意思,本質是觀察者模式,以觀察者和訂閱者的異步響應式編程。

本文主要介紹了關于RxJava 2.x新特性的相關資料,下面話不多說,來看看詳細的介紹吧。

背壓的分離

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

Action1——–Consumer

Action2——–BiConsumer

后面的Action都去掉了,只保留了ActionN

參考

RxJava 2.x新特性總結整理

RxJava 2.x新特性總結整理

RxJava 2.x新特性總結整理

RxJava 2.x新特性總結整理

RxJava 2.x新特性總結整理

RxJava 2.x新特性總結整理

RxJava 2.x新特性總結整理

RxJava 2.x新特性總結整理

總結

以上就是關于RxJava 2.x新特性的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴隆县| 石家庄市| 始兴县| 湟源县| 双流县| 革吉县| 新邵县| 五台县| 蓬溪县| 宜兰市| 涟源市| 健康| 阿荣旗| 高唐县| 紫金县| 合江县| 河间市| 宕昌县| 吉木萨尔县| 高雄市| 阿瓦提县| 鞍山市| 大连市| 内丘县| 滦平县| 思茅市| 大悟县| 临清市| 精河县| 贵定县| 双辽市| 溆浦县| 河曲县| 梧州市| 丰原市| 若尔盖县| 武夷山市| 金秀| 准格尔旗| 崇州市| 措美县|