Rx紹介

3551 ワード

  • 紹介
  • ReactiveXはReactive Extensionsの略で、一般的にRxと略記されている.
  • は2012年11月にオープンソースであり、Rxはプログラミングモデルであり、一貫したプログラミングインターフェースを提供することを目標とし、開発者が非同期データストリームをより便利に処理することを支援し、Rxはサポートする.NET、JavaScript、C++;
  • マイクロソフトは定義を与え、Rxは関数ライブラリであり、開発者が観察可能なシーケンスとLINQスタイルクエリーオペレータを利用して非同期およびイベントベースのプログラムを記述することができる(Rx=Observable+LINQ+Schedule)
    注意:LINQ、言語統合クエリー(Language Integrated Query)4.Rxはプログラミングインターフェースだけでなく、プログラミング思想の突破であり、多くの他のライブラリとフレームワーク、プログラミング言語に影響を与えている.

  • Rxモデルおよび利点
  • オブザーバモードを使用
  • 作成:Rxはイベントフローとデータフロー
  • を容易に作成できる.
  • の組合せ:Rxはクエリー式オペレータの組合せと変換データストリーム
  • を使用する.
  • 傍受:Rxは任意の観察可能なデータストリームを購読し、
  • を実行することができる.
  • 簡略化コード
  • 関数式スタイル:観察可能なデータストリームに対して副作用のない入出力関数を使用し、プログラム内の複雑な状態を回避する
  • 簡略化コード:Rxオペレータは通常、複雑な難題を少ない数行のコード
  • に簡略化することができる.
  • 非同期エラー処理:従来のtry/catchは非同期計算を処理することができず、Rxは適切なエラー処理メカニズム
  • を提供する.
  • 同時使用:RxのObservableとSchedulersは開発者に下層のスレッド同期と各種同時問題
  • から抜け出すことができる.
  • 応答プログラミング
  • は、フィルタ、選択(select)、変換(transform)、結合(combine)、および組合せ(compose)の複数のObservableをフィルタリングするために使用できる一連のオペレータを提供し、これらのオペレータは、実行および複合を非常に効率的にする.(注:RxAndroid用)
  • ObservableはIterableのプッシュ方式の等価物とすることができ、Iterableを使用して、消費者は生産者からデータを引き出し、スレッドがデータの準備ができるまでブロックする.Observableを使用して、データの準備ができたら、生産者はデータを消費者にプッシュします.データは同期または非同期で到着することができ、この方法はより柔軟です.

  • RxJavaのオブザーバーモード
  • オブザーバーパターンが向いているニーズは、Aオブジェクト(オブザーバー)がBオブジェクト(オブザーバー)の何らかの変化に高度に敏感であり、B変化の瞬間に反応することである.例:警察が泥棒を捕まえる.
  • RxJavaには、Observable(被観察者)、Observer(観察者)、subscribe(購読)、イベントの4つの基本概念があります.
  • ObservableとObserverはsubscribe()方式でサブスクリプション関係を実現し、Observerは必要に応じてイベントを発行してObserverに通知することができる.


  • RxJava基本実装
  • Observerを作成します.
    すなわち,観察者は,イベントがトリガーされたときにどのような行為があるかを決定する.Observerインタフェース2.Observableの作成;>すなわち,観察者は,いつイベントをトリガし,どのようなイベントをトリガするかを決定する.RxJavaはcreate()メソッドを使用してObservableを作成し、イベントトリガルール3を定義する.Subscribe(購読);>ObservableとObserverを作成した後、subscribe()メソッドで結合します.

  • RxAndroid実装の詳細手順
  • Gradleの構成
  • 構成依存ライブラリ:
    compile 'io.reactivex:rxjava:1.1.0'
    compile 'io.reactivex:rxandroid:1.1.0'
    
  • はJDK 1をサポートする.8:
    ①その目的は、表現言語を使用することである.
    ②その具体的なやり方はbuild.gradle(main Module)のandroid{}ブロックにコードを追加
    compileOptions{
    
      sourceCompatibility JavaVersion.VERSION_1_8
      targetCompatibility JavaVersion.VERSION_1_8
    
    }
    1. build.gradle(main Module)
    apply plugin: 'me.tatarka.retrolambda'
    
    1. build.gradle(Project)
    classpath 'me.tatarka:gradle-retrolambda:2.5.0'
    
    1. void onNext(T item)

      Observable , Observable , , 。
      2. void onError(Throwable e)
      > Observable , Observable, onNext() onCompleted(),onError() 。
      3. void onCompleted()
      > , ,Observable onNext() 。