셋 다 비동기 stream 이지만 의미 다름: Flow = 1회성 cold, StateFlow = 현재 상태 (hot, 1 replay), SharedFlow = 이벤트 버스 (hot, configurable replay). 잘못 고르면 이벤트 손실 또는 중복 emit.
📖 핵심 개념
Cold flow: collect 시작할 때 producer 시작. collector 0 = 비활성. 각 collector 별 독립.
Hot flow: producer 가 계속 동작. collector 수와 무관. 다수 collector 공유.
StateFlow: 현재 값 보유. 새 collector → 즉시 현재 값 받음. distinctUntilChanged 자동.
SharedFlow: 이벤트 list. replay 옵션 (새 collector 가 받을 옛 emission 수).
valstate:StateFlow<UiState>=repo.observeUser(id).map{UiState.Success(it)}.stateIn(scope=viewModelScope,started=SharingStarted.WhileSubscribed(5000),// 5s 후 unsubscribe
initialValue=UiState.Loading,)