Ответ
StateFlow и SharedFlow – два основных "горячих" потока в Kotlin Coroutines.
StateFlow:
- Хранит текущее состояние (значение)
- Новые подписчики сразу получают текущее значение
- Используется для управления состоянием UI
val stateFlow = MutableStateFlow(0)
stateFlow.collect { value ->
println("Received: $value")
}
SharedFlow:
- Не хранит состояние (но можно настроить replay)
- Поддерживает несколько подписчиков
- Полезен для событий (например, нажатий кнопок)
val sharedFlow = MutableSharedFlow<Int>()
sharedFlow.emit(1) // без подписчиков значение теряется
Ключевое отличие: StateFlow всегда имеет значение и реплицирует его новым коллекторам, а SharedFlow работает как событийный поток.