개발하는 두더지

[Java/Android] RxJava2 의 Subject 종류들과 ConnectableObservable 본문

Java,Android

[Java/Android] RxJava2 의 Subject 종류들과 ConnectableObservable

덜지 2018. 5. 4. 20:54

Subject


cold observablehot observable로 바꿔줌. 즉, 구독자가 구독하는 순간 데이터를 발행하는 방식에서 구독자 없이도 데이터를 발행할 수 있도록 만들어줄 수 있다는 말이다. Observable이면서 Observer인 클래스이다.



Subject 종류


AsyncSubject

발행된 데이터중 맨 마지막 데이터만 받는다. 즉, onComplete 되기전 마지막 onNext 값만 처리함.





BehaviorSubject

중간에 들어온 구독자는 다음 발행 데이터 전부터 받는다. onNext("1"), onNext("3") 이후 구독자A가 들어오고, onNext("5")가 실행된다면 구독자A는 3, 5 값을 받는다.  예를들면 학교 수업에 지각했다고 하자. 교수님은 이미 칠판에 수업 내용을 적어놓았고, 늦게들어온 학생은 현재 칠판에 써져있는 내용부터 볼 수 있다.




PublishSubject

구독자는 다음 발행 데이터부터 받는다. onNext("1"), onNext("3") 이후 구독자A가 들어오고, onNext("5")가 실행된다면 구독자A는 5 값을 받는다. 



ReplaySubject

구독자는 언제 구독하던 처음부터 데이터를 받는다. 테이프로 전체 내용을 녹음해두었다가 구독시작하는 구독자에게 내용을 들려주는 것과 같다.



ConnectableObservable

기존 Observable과 다르게 subscribe 할 때 데이터를 발행하지 않고 connect를 할 때 그때까지 구독한 모든 구독자들에게 데이터 발행을 시작한다.



PublishSubject 처럼 구독자는 구독 이후 다음 발행 데이터부터 받는다.







참고

ReactiveX - Subject


ReactiveX - javadoc

Comments