Page 33 -
P. 33

그래서 Cold 생산자를 구독하면 생산자 처리가 시작되지만, Hot 생산자는 구독해도 생산자 처리
                    가 시작되지 않을 수 있습니다. 또한, Hot 생산자의 경우 이미 처리를 시작한 생산자를 구독하면
                    소비자는 구독한 시점부터 데이터를 받게 되고, 같은 데이터를 여러 소비자가 받을 수도 있습니다.                             1

                    RxJava에서 생성 메서드로 생성된 생산자는 기본으로 Cold 생산자입니다. Hot 생산자를 생성하
                    려면 Cold 생산자에서 Hot 생산자로 변환하는 메서드를 호출하거나 뒤에서 설명하는 Processor                         RxJava의 기본
                    와 Subject를 생성해야 합니다.

                    그리고 Hot Flowable/Observable로는 ConnectableFlowable/ConnectableObservable이

                    있는데, 이 둘은 Cold Flowable/Observable을 Hot 생산자로 변환하는 연산자를 통해 생성할
                    수 있습니다.




                    1.3.5 ConnectableFlowable/ConnectableObservable


                    ConnectableFlowable/ConnectableObservable은 Hot Flowable/Observable이며, 여러
                    Subscriber/Observer에서 동시에 구독할 수 있습니다. 또한, Cold와 달리 subscribe 메서드를

                    호출해도 처리를 시작하지 않고 connect 메서드를 호출해야 처리를 시작합니다. 그래서 처리를
                    시작하기 전에 여러 Subscriber/Observer에서 구독하게 하고 그 후 처리를 시작해 처음부터 동
                    시에 여러 구독자에게 데이터를 통지할 수 있습니다. 다시 말하면 connect 메서드를 호출할 때까
                    지 처리가 시작되지 않습니다. 따라서 ConnectableFlowable/ConnectableObservable을 다

                    루려면 connect 메서드를 반드시 호출해야 합니다.
                    ConnectableFlowable/ConnectableObservable은 처리를 시작하는  connect 메서

                    드 외에도 몇 가지 독자적인 메서드가 있으며, 해당 메서드들은 ConnectableFlowable/
                    ConnectableObservable에서 Flowable/Observable을 생성합니다.


                      Flowable/Observable로 변환하는 주요 메서드
                      refCount()
                      autoConnect()/autoConnect(int numberOfSubscribers)




                    refCount

                    refCount 메서드는 ConnectableFlowable/ConnectableObservable에서 새로운 Flowable/
                    Observable을 생성합니다. 이 Flowable/Observable은 이미 다른 소비자가 구독하고 있다면

                                                                                                  041





     RxJava 리액티브 프로그래밍(본문)최종.indd   41                                                      2019-03-26   오전 11:26:31
   28   29   30   31   32   33   34   35