Проверяет знание API для генерации реактивных потоков данных.
Flow создаётся через flow {} с операциями emit, из коллекций через collection.asFlow(), через конструкторы библиотек (flowOf, channelFlow), а также специальные builders: flowOf(1,2,3), emptyFlow(), callbackFlow для интеграции обратных вызовов.
1. flow {} builder
val f = flow {
for(i in 1..3) emit(i)
}2. Коллекции
listOf(1,2,3).asFlow()3. Примитивы
flowOf("A", "B")
emptyFlow<String>()4. channelFlow/callbackFlow
Для интеграции callback-API
callbackFlow {
listener { data -> trySend(data) }
awaitClose { removeListener() }
}Когда использовать:
flow для последовательных операций
channelFlow для параллельных эмитов