서론
Android Flow 학습 중에 등장했던 Cold Stream, Hot Stream의 개념에 대한 정리가 필요해 보여 간단하게 정리해보려 한다.
Cold Stream과 Hot Stream의 차이
보통 flow를 Cold Stream, StateFlow/SharedFlow를 Hot Stream으로 분류한다.
- 데이터가 생성되는 위치
- 생산자가 발행한 데이터를 동시에 여러 소비자들이 수신할 수 있는지 여부
- 스트림이 데이터를 생산하는 시점
Cold Stream
- 데이터가 내부에서 생성됨
- 데이터는 소비자가 소비를 시작할 때 생산됨
- 하나의 생산자에는 하나의 소비자가 존재함
터미널 연산자(collect, collectLatest, single, reduce, toList 등..)가 호출되기 전까지는 활성화되지 않음
Hot Stream
- 데이터가 외부에서 생성됨
- 하나의 생산자에 다수의 소비자가 존재
- 생산자가 소비자의 소비를 신경 쓰지 않고 갱신(소비자는 소비를 시작한 시점부터 생산된 데이터를 소비하기 시작함)
정리하면
Cold Stream - CD 플레이어로 예를 들 수 있는데, 소비자가 CD 재생을 시작하면 재생되고, 종료하면 종료된다. 즉, 소비 시점과 관계없이 동일한 데이터를 제공
Hot Stream - 라디오 방송을 예로 들 수 있는데, 여러 소비자가 청취할 수 있고, 한 명의 소비자가 방송을 청취하지 않더라도 계속해서 방송된다. 즉, 소비자가 없더라도 라디오 방송은 진행될 수 있고, 데이터 소비 시점에 따라 다른 데이터가 보일 수 있다.
Reference
https://proandroiddev.com/going-deep-on-flows-channels-part-1-streams-5ae8b8491ac4
Going deep on Flows & Channels — Part 1: Streams
Here, in a series of articles, we will dive deeper into the Channel’s and Flow’s API.
proandroiddev.com
https://medium.com/@apfhdznzl/flow%EC%99%80-channel-cold-stream%EA%B3%BC-hot-stream-c42c64cf4996
Flow와 Channel, Cold Stream과 Hot Stream
Cold Stream VS Hot Stream
medium.com