2016-10-30 11 views
1

私はRxJava 1.6で完璧に働いた次のコードを持っています。RxJava 2.0でPublishSubjectを購読する

private PublishSubject<Boolean> mConnectionSubject; 
... 
Observable.create(subscriber -> { 
     mConnectionSubject.subscribe(subscriber); 
     ... 
    }); 

ただし、RxJava 2.0への移行後、このコードはコンパイルされません。その理由は、Observable.create()が今や引数としてObservableEmitterを受け入れるからです。しかし、PublishSubjectはObservableEmitterを受け入れません。 ConsumerまたはObserverインターフェイスのみを受け入れます。

ありがとうございます。

答えて

1

あなたが言及したシナリオでは、私は以下のようにします。

Observable.<Boolean>create(emitter -> mConnectionSubject.subscribe(
    emitter::onNext, 
    emitter::onError, 
    emitter::onComplete 
)); 
+1

あなたの提案は良いですが、私はGitHub https://github.com/ReactiveX/RxJava/issues/4787でこの問題に対応しています。 –

0

あなたは新しい観測可能を作成する必要はありません、これは動作するはずです:

private PublishSubject<Boolean> mConnectionSubject; 
... 
mConnectionSubject.doOnNext(...).observeOn(...).subscribe(); 

あなたPublishSubjectにチェーン複数のオペレータ/サブスクリプションすることができます。

+0

ご質問にはお答えできません。将来のサブスクリプションでObservableEmitterを使用するにはどうすればいいのか分かりません。今はint RxJava 2.0とは違って、以前の実装と比較してアプローチが異なります。 –

関連する問題