Что такое холодный поток в flow

«Что такое холодный поток в flow» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Холодный поток (cold flow) в Kotlin Flow — это поток, который начинает испускать данные только при наличии активного подписчика. Каждая подписка запускает выполнение потока заново.

Особенности:

  • Ленивая инициализация (выполняется только при вызове collect)
  • Независимые подписки (каждый collect запускает поток с начала)
  • Пример: flow { ... }, asFlow()

Пример:

val coldFlow = flow {
    println("Emitting 1")
    emit(1)
    println("Emitting 2")
    emit(2)
}

// Первый collect
coldFlow.collect { println("Received $it") } // Выведет 1, 2  

// Второй collect (запустится заново)
coldFlow.collect { println("Received again $it") } // Выведет 1, 2 снова