2017-08-18 10 views
0

私はすでに私が非同期のシステムを既に持っていて、それをRxストリームに変換しようとしています。このフローは、私が修正するソースを持たないサードパーティのライブラリの一部です。だから私はそれの周りにRxラッパーを作成するために探しています。既に非同期のフローを確認しようとしています

ここでは正確なコードを共有することはできませんが、このフローのマネージャーとして機能するシングルトンクラスを作成しました。シングルトンクラスでは、サードパーティライブラリにあるクラスのオブジェクトを初期化しました。このオブジェクトの初期化中に、コンストラクタでコールバッククラスのリファレンスを渡す必要があります。これは、ライブラリがすべてのメソッド呼び出しに対して非同期的に応答を返すコールバックです。私はここで行うために探しています何

Callback callback = new Callback() {
public void onResponse(Message message) {
// Perform action
}
};
SomeClassInSdk clazz = new SomeClassInSdk(callback);

は、この非同期システムは、受信ストリームに変換し、私は私がRxjava2に初心者であるとして、それを開始する方法を見つけ出すように見えることはできませんです。

Retrofit RxJava2アダプターコードのコードを複製しようとしましたが、私のコードで見ることができないすべてのobservableに対して新しいCallbackオブジェクトが初期化されています。

ご協力いただければ幸いです。

答えて

0

Observable.fromCallable()Docs Linkを使用できます。このメソッドで非同期コールバックをラップするだけで、オブザーバブルが返されます。

また、たぶんシングル & を使用することができます。詳細は、ドキュメントの中に見て:

後は、反応性に命令型プログラミングのパラダイムを転換するシングルを使用した例です。

public Single<String> myMethod() { 
     return Single.create(new Single.OnSubscribe<String>() { 
      @Override 
      public void call(final SingleSubscriber<? super String> singleSubscriber) { 

       myAsyncMethod(new Callback() { 
        public void success(String data) { 
         singleSubscriber.onSuccess(data); // call this upon success       
        } 

        public void failure(String err) { 
         singleSubscriber.onError(err);       
        } 
       }) 
      } 
     }); 
    } 
関連する問題