2016-10-30 2 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이기 때문에 이전의 구현 방식과 다른 접근 방식을 사용합니다. –