2017-10-25 10 views
1

RxJava2のアセンブリプロセスについて質問があります。このプロセスの主な目的は何ですか?属性onObservableAssembly(RxJavaPlugins)はnullに設定されているか、または参照されていますか? onAssemblyメソッドで使用されているapplyメソッドによる関数インタフェースの実装を見ることは可能ですか?あなたはObservable.just(1,2,3)とフィルターで大文字小文字を説明することができます。ありがとうRxJava 2アセンブリプロセス

答えて

0

組み立てプロセスは、subscribe()呼び出しで後で実現されるデータフロー用のテンプレートを形成するためにオペレータチェーンが確立されるときです。 Observableのstatic/finalメソッドが呼び出されたときにカスタム演算子を挿入するために、アセンブリフックは高度な概念です。

ユースケースは次のようになります。アセンブリは、おそらくどこがクラッシュした場合に見に余分な情報を与えて、起こった現在のスタックトレースをキャプチャ

  • 追加のデバッグ事業者。
  • 特定の演算子を他のカスタム演算子に置き換える。
  • プロトコルの順守の流れを検証するカスタム演算子をシミングします。

デフォルトのアセンブリフックはnullです。これは、もともとの意図されたオペレータが実行することを意味します。

例の使用法はextensions projectにあります。 justfilterを使用すると、次のようなことができます。

RxJavaPlugins.setOnObservableAssembly(o -> { 
    if (o instanceof ObservableFromArray) { 
     return new ObservableFromArray<>(new Integer[] { 4, 5, 6 }); 
    } 
    return o; 
}); 

Observable.just(1, 2, 3) 
.filter(v -> v > 3) 
.test() 
.assertResult(4, 5, 6); 

RxJavaPlugins.setOnObservableAssembly(null);