- 상태 유지:
- StateFlow는 항상 현재 값을 유지하며, 구독자가 구독할 때 즉시 그 값을 제공합니다. 이는 UI와 상태 관리를 할 때 유용합니다.
- 일반 Flow는 값을 방출할 때마다 새로운 값만 전달하며, 이전 값을 저장하지 않습니다.
- 값 변경 감지:
- StateFlow는 값이 변경될 때마다 구독자에게 자동으로 업데이트를 전파합니다. 이는 UI가 상태 변화에 즉시 반응할 수 있게 합니다.
- 일반 Flow는 값을 방출하는 시점에만 구독자에게 데이터를 전달합니다.
- Cold vs. Hot:
- StateFlow는 "hot" 스트림입니다. 즉, 상태가 변경되면 항상 값을 발행하며, 구독자가 없더라도 상태를 유지합니다.
- Flow는 "cold" 스트림으로, 구독자가 있을 때만 값을 생성하고 방출합니다.
- Thread-Safety:
- StateFlow는 스레드 안전성을 보장하며, 여러 스레드나 코루틴에서 안전하게 사용할 수 있습니다.
// MutableStateFlow 생성
val mutableStateFlow = MutableStateFlow(0)
// 상태 변경
mutableStateFlow.value = 1 // 상태 업데이트
// StateFlow로서의 접근
val stateFlow: StateFlow<Int> = mutableStateFlow
// 구독
stateFlow.collect { value ->
println("Current value: $value") // 상태가 변경될 때마다 호출됨
}
출처 : ChatGPT
'kotlin' 카테고리의 다른 글
StateFlow vs SharedFlow (0) | 2024.10.15 |
---|---|
Flow - SharedFlow, MutableSharedFlow (1) | 2024.10.15 |