interface StateFlow<out T> : SharedFlow<T>
StateFlow
는 값(data)에 대한 업데이트를 consumer(소비자)로 내보내고, 갱신(update)이 가능한 단일 데이터로 읽기 전용(read-only) 상태(state)는 나타내는 Flow(SharedFlow)다.
collect
와 같은 메서드들의 여부와 무관하게 존재하기 때문에 Hot Flow
임.value
프로퍼티로 가져올 수 있고, 업데이트(수정)가 가능하다.Flow.launchIn
메서드로 시작된 코루틴과, Flow.collect
의 메서드로 StateFlow
는 정상적으로 완료되지 않는다. → Hot FlowStateFlow
의 값을 수집하는걸 구독자라고한다.
interface MutableStateFlow<T> : StateFlow<T> , MutableSharedFlow<T>
MutableStateFlow
는 StateFlow
와 MutableSharedFlow
를 구현하고 있다.
StateFlow
의 value를 위해 setter 기능을 제공한다.emit
)된 값을 수집(collect
)한다.1 class CounterModel {
2 private val _counter = MutableStateFlow(0) // private mutable state flow
3 val counter = _counter.asStateFlow() // publicly exposed as read-only state flow
4
5 fun inc() {
6 _counter.update { count -> count + 1 } // atomic, safe for concurrent use
7 }
8 }
MutableStateFlow
의 생성자를 사용해서 초기값을 설정해준다.MutableStateFlow
인 _counter 변수를 StateFlow
로 캐스팅해준다.
update
메서드를 사용해서 값을 원자적으로 업데이트 함.
update
메서드는 value
값을 핸들링한다. 값이 업데이트 되고, 변경사항은 연결됨.