Ответ
Flow является холодным потоком данных. Это означает, что он начинает испускать элементы только при наличии активного подписчика (collector) и для каждого подписчика запускается независимый поток данных.
Пример:
val flow = flow {
emit(1)
emit(2)
}
// Запускаем первый collector
flow.collect { println("Collector 1: $it") }
// Запускаем второй collector - данные начнут испускаться заново
flow.collect { println("Collector 2: $it") }
Ключевые особенности:
- Холодный поток (cold stream)
- Данные начинают испускаться при вызове collect()
- Каждый collector получает независимый поток данных
- Аналог Sequence, но с поддержкой корутин