首頁  >  文章  >  Java  >  RxJava 2.x新特性總結整理的圖文介紹

RxJava 2.x新特性總結整理的圖文介紹

黄舟
黄舟原創
2017-03-31 10:55:571405瀏覽

這篇文章主要介紹了RxJava 2.x新特性的相關資料,文中透過圖文及範例程式碼介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

什麼是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新特性總結整理的圖文介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn