Ответ
В Kotlin Flow есть несколько видов:
- Cold Flow – запускается при каждом вызове
collect(). Пример:
val coldFlow = flow { emit(1) }
coldFlow.collect { println(it) } // 1
coldFlow.collect { println(it) } // снова 1
-
Hot Flow – данные эмитятся независимо от подписчиков (SharedFlow, StateFlow)
-
SharedFlow – мультикастный hot flow, хранит N последних значений:
val sharedFlow = MutableSharedFlow<Int>(replay = 2)
- StateFlow – частный случай SharedFlow с 1 значением (аналог LiveData):
val stateFlow = MutableStateFlow(0)
-
ChannelFlow – комбинация Flow и Channel, поддерживает буферизацию и backpressure
-
Callback Flow – для обертки callback-API в Flow
-
Flow операторы –
map,filter,transformи др. создают производные Flow