ホームページ  >  記事  >  Java  >  RxJava 2.x の新機能を要約したグラフィックとテキストの紹介

RxJava 2.x の新機能を要約したグラフィックとテキストの紹介

黄舟
黄舟オリジナル
2017-03-31 10:55:571336ブラウズ

この記事は主に 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/たぶん観察者


上の 3 つは似ていますが、単一のデータの送信には適していますが、大量のデータの送信には適していません。

//判断是否登陆
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() {
  }
 });

実際、このオブザーバー モードは大量のデータを送信するために使用されるのではなく、単一のデータを送信するために使用されます。つまり、特定の

event の結果 (true または false) のみが必要な場合は、このオブザーバー モードを使用できます

ActionRx1.0————–Rx2.0

Action1—— –Action


Action1——–Consumer


Action2——–BiConsumer


次のアクションは削除され、ActionN のみ

reference

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。