2016-12-02 3 views
0

は、だから私のビューモデルから、私は別のクラスの私の観察可能な呼び出し:RxAndroid:ObservableからSubscriberオブジェクトを取得するきれいな方法はありますか?

getAuthentication.kickoff() 
      .subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(new Subscriber<RxOkHttpResponse>() { 
       @Override 
       public final void onCompleted() { 
        getAlbums(); 
       } 

       @Override 
       public final void onError(Throwable e) { 
        userMsgHandler.showToast(mParent,mParent.getString(R.string.error_cannot_authenticate)); 
       } 

       @Override 
       public final void onNext(RxOkHttpResponse response) { 

        mSubscription = response.subscription; 

       } 
      }); 

だから、この呼び出しは明らかに観測を返します。だから私は、このObservableを返すか、またはそこにも方法がある場合、subscriber.unsubscribe()を呼び出す最もクリーンな方法が不思議です(今、私はonNextで返します - しかし、私は幸せなことはしません)

だから、(.subscribeを保存するためのコードをフォーマットする方法は、メンバ変数に)

がある:

.observeOn(AndroidSchedulers.mainThread()) 
      mSubscriber = .subscribe(new Subscriber<RxOkHttpResponse>() { 

... 

私は答えはあなたが使用しているかどうかに依存V 1.1.0

+0

@ジョン・オライリー...はい、その呼び出しをメンバ変数に戻して同じコード形式を保持する方法はありますか? – Mike6679

+0

申し訳ありませんが、私はそれを編集していたので長くなっていたので、私のコメントを削除しました!それを下に移動しました。私はあなたの質問を理解するかわからない? –

答えて

2

を使用していますRxJava 1または2。RxJavaの場合1 subscribe()Subscriptionインスタンスを返します。unsubscribe()を呼び出すことができます。しかしRxJava 2のために、私はあなたがこれは私が探していた構文であるonSubscribe()

0

を追加する必要があると考えている:

mSubscriber = (getAuthentication.kickoff() 
       .subscribeOn(Schedulers.newThread()) 
       .observeOn(AndroidSchedulers.mainThread()) 
     ).subscribe(new Subscriber<RxOkHttpResponse>() { 

      ... 

今、私は簡単にOnDestroy(によってトリガクリーンアップのための私の見解モデルでmSubscriberを保存することができます)で私のアクティビティ

関連する問題