2017-06-08 1 views
0

として消費者に渡す方法:rxjava2 - 私はアンドロイドで、次のrxjavaの依存関係を使用していたパラメータ

compile 'io.reactivex.rxjava2:rxjava:2.1.0' 
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' 

と私はPARAMTERとしてオブザーバーになります方法を作成しようとしています。私はいくつかの問題を抱えています。これはrxjava2なので、物事は更新され、少し混乱していると思います。

私が達成したいものをお見せしましょう:

private Subscription subscription = Scriptions.empty(); //this isn't working. how to set a empty observer IN RXJAVA2? 

protected abstract Observable buildUseCaseObservable(); //RETROFIT WILL BUILD THE OBSERVABLE FOR ME SOMEWHERE ELSE 


public void execute(Consumer UseCaseSubscriber){ 
    this.subscription = this.buildUseCaseObservable() 
      .subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(UseCaseSubscriber); //THIS LINE IS NOT WORKING , ERROR IS IN THE PHOTO 
} 

public void unsubscribe(){ 
    if(!subscription.isUnsubscribed()){ 
     subscription.unsubscribe(); 
    } 
} 

基本的に私は(パラメータとして観測者/消費者を受け入れ、改造が行われた後、UIを更新するためにそれを使用するメソッドを作成しようとしています観察可能である)。

更新: ok私はdisposablesに変更しました。今私は私が戻ってきた使い捨て物を保管したいが、それは働かない。

enter image description here

私は、サブスクリプションで全体を保存する(または他のあなたがお勧めします何でも)理由はので、私はそれたびに解除することができますされています

protected abstract Observable buildUseCaseObservable(); 

    @SuppressWarnings("unchecked") 
    public void execute(Observer UseCaseSubscriber){ 
     this.subscription = this.buildUseCaseObservable() 
       .subscribeOn(Schedulers.io()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribe(UseCaseSubscriber); 
    } 

    public void unsubscribe(){ 
     if(!subscription.isUnsubscribed()){ 
      subscription.unsubscribe(); 
     } 
    } 

私は次の警告を取得していますが欲しいです。

しかしdocsから

反応ストリームベースのインタフェースは、org.reactivestreams.Publisherがボイドとして加入()メソッドを定義するので、Flowable.subscribe(加入者)は、もはや任意のサブスクリプションを返し(または使い捨て)。他の基本反応タイプも、それぞれの加入者タイプとともにこの署名に従う。

どのように私たちはその後退会することができるように使い捨てを保存するには?

+0

私はあなたの上のセクションで回答が与えられているので、wikiページ全体を読むことをお勧めします:https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#subscriber – akarnokd

+0

優れています。あなたの右 – j2emanue

答えて

1

Subscriptionは、バージョン2.xではDisposableに「名前が変更されました。この変更についてrxJava wikiの説明を読むことができますhere

どのように私たちはその後退会することができるように使い捨てを保存するには? Flowable.subscribe(Subscriber)は使い捨てですが、Observable.subscribe(Subscriber)は返されません。背圧が必要ない場合は、FlowableObservableにキャストして.toObservable()と入力してください。

+0

使い捨ての作品に変更していただきありがとうございますが、私の質問を更新しました。私はサブスクリプションの後にすべてのものを保存する必要があります – j2emanue

+0

私はまた私の答えを更新しました –

関連する問題