⭐️ Flow

Cold Stream

  1. 하나의 소비자에게 값을 보낸다.
  2. 생성된 이후에 누군가 소비하기 시작하면 데이터를 발행한다.

→ DB, 네트워크 통신때 사용

⭐️ StateFlow, SharedFlow

Hot Steam

  1. 하나 이상의 소비자에게 값을 보낼 수 있다.
  2. 데이터 발행이 시작된 이후부터 모든 소비자에게 같은 데이터를 발행하고 구족자가 없는 경우에도 데이터를 발행한다.

→ 상태가 계속 변하는 값을 관찰할 때 ex) 온도, 속도 등등

⭐️ StateFlow와 SharedFlow의 차이점

  1. Flow > SharedFlow > StateFlow 순으로 상속 받고 있다.

  2. StateFlow는 몇가지 옵션을 통하여 SharedFlow의 동작을 재정의한다.

    따라서 SharedFlow는 StateFlow의 일반화 버전이다!

MutableSharedFlow<Int>(
    	replay = 0, 
			extraBufferCapacity = 1,
			onBufferOverflow = BufferOverflow.DROP_OLDEST
)

→ relay : 새로운 구독자에게 이전 이벤트 방출 여부(0=방출X, 1=방출O)

→ extraBufferCapacity : 추가 버퍼 생성 여부(1 = 생성)

→ onBufferOverflow : 버퍼 초과시 처리 여부