diff --git a/README.md b/README.md index 7098f3b..0f00690 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,43 @@ * RxJavaの拡張モジュール * RxAndroid:Androidで使うスレッドを管理するSchedulerを持つ * RxLifecycle:AndroidのActivityやFragmentをRxJavaのFlowableやObservableのライフサイクルと同期する + +#### オペレータ内で生成される非同期のFLowable/Observable +* flatMap() + * データを受け取ると、新たにFlowable/Observableを生成して実行し、そこで通知されたデータを結果として通知するオペレータ + * 受け取るデータが連続してくるような場合、生成したFlowable/Observableが同時に実行され、それぞれがデータを通知したタイミングで結果としてデータを通知するので、最終的に通知されるデータは受け取った順に実行されるとは限らない +* concatMap() + * flatMapと違う点は、受け取るデータが連続してくるような場合、最終的に通知されるデータは順序通り + * 1つのデータの処理に時間がかかる場合は、処理が終わるまで次のFLowable/Observableを生成しない +* concatMapEager() + * flatMapと違う点は、受け取るデータが連続してくるような場合、最終的に通知されるデータは順序通り + * 1つのデータの処理に時間がかかる場合は、全て違うスレッドで実行の後に生成されたデータがバッファされる + +#### リソース管理 +* using() + * Observable.using() + * リソースの取得、リソースから取得したデータを使ったFLowable/Observableの生成、リソースの解放を行うインターフェースが用意されている + +#### RxJavaのバックプレッシャー +* Flowableにのみ用意されており、Observableにはない +* この機能が必要になるケースはFlowableとデータを受け取る側が異なるスレッド上で処理を行い、通知する処理スピードがデータを受け取る側の処理スピードより速い場合 +* request() + * SubscriberがonSubscribe()で受け取るSubscriptionの、Flowableがデータを何件まで通知するかをリクエストするメソッド + * 1回目はonSubscribe()で通知されるデータ数のリクエストを行い、2回目以降はonNext()で処理を行った後に再度データ数のリクエストを行う + * 1回目のonSubscribe()でrequest(Long.MAX_VALUE)とした場合は、通知するデータ数の制限がなくなり、生成されたデータは全て通知されるようになるため、onNext()でリクエストは不要となる +* observeOn() + * scheduler:Scheduler, delayError:boolean, bufferSize:intを設定することが出来る + * デフォルトでbufferSizeは128となっているため、バッファされるデータが128個を超えるとMissingBackpressureExceptionが起きる +* BackpressureStrategy + * Flowableがどのように通知待ちのデータを扱うかのバックプレッシャーの種類 + * create()でFlowableを生成する際の第2引数にBackpressureStrategyを指定する + * 種類 + * BUFFER:通知されるまで、全てのデータをバッファする + * DROP:データを通知できるようになるまで、新たに生成されたデータを破棄する + * LATEST:生成した最新のデータのみをバッファし、生成される度にバッファするデータを置き換える + * 通知待ちのデータのバッファサイズを超す場合はMissingBackpressureExceptionのエラーを通知する + * 特定の処理を行わない。主にonBackpressureで始まるメソッドを使ってバックプレッシャーのモードを設定する場合に使われる + #### 通知する際のルール * nullを通知してはならない