紹介 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
}
:
- build.gradle(main Module)
apply plugin: 'me.tatarka.retrolambda'
- build.gradle(Project)
classpath 'me.tatarka:gradle-retrolambda:2.5.0'
- void onNext(T item)
Observable , Observable , , 。
2. void onError(Throwable e)
> Observable , Observable, onNext() onCompleted(),onError() 。
3. void onCompleted()
> , ,Observable onNext() 。