kotlin

StateFlow

whjungdev 2024. 10. 15. 16:05

 

  • 상태 유지:
    • 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