2017-04-08 7 views
1

私は以下のクラスを持っています。サブスクリプションオブジェクトまたは何か他のものを返したいので、私はsubscribe()メソッドを参照していますが、サブスクライブ(オブザーバ)はvoidを返します。 どうすればいいですか?rxJavaリクエストからの退会方法

public abstract class MainPresenter<T> { 
protected <T> Disposable subscribe(Observable<T> observable, Observer<T> observer) { 
observable.subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(observer); 

} 

[新しい更新] 私はよりよい解決策を待っています、このよう一時的な使用:!

protected <T> DisposableMaybeObserver subscribe(final Maybe<T> observable, 
               final Observer<T> observer) { 
    return observable.subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribeWith(new DisposableMaybeObserver<T>() { 
       @Override 
       public void onSuccess(T t) { 
        observer.onNext(t); 
       } 

       @Override 
       public void onError(Throwable e) { 
        observer.onError(e); 
       } 

       @Override 
       public void onComplete() { 
        observer.onComplete(); 
       } 
      }); 
} 

[新アップデート2] [[スクリーンショット] [https://i.stack.imgur.com/mioth.jpg]]

[新規更新3] [Screenshot2] 1

+0

「DisposableObserver」を使用してインスタンスを返すだけです。 – akarnokd

+0

@akarnokd例を挙げることはできますか? – matio

+0

https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#subscriber「io.reactivex.Observer」パッケージから観測可能な – akarnokd

答えて

3

あなたは多分使用subscribeWith使用する必要があります。そして、あなたが必要なとき

private Disposable mDisposable; 

public abstract class MainPresenter<T> { 
protected Disposable subscribe(Observable<T> observable, DisposableObserver<T> observer) { 
mDisposable = observable.subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribeWith(observer); 

return mDisposable; 

} 

を:

if (mDisposable != null && !mDisposable.isDisposed()) { 
    mDisposable.dispose(); 
} 

・ホープ、このことができます。

+0

のメソッドがありませんsubscribeOn() – matio

+0

Plz新しい更新を参照してください – matio

+0

Haveあなたは私の提案を試してみませんか? – Cochi

関連する問題