В чем разница между горячим и холодным потоком данных

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

Ответ

Горячий поток (Hot stream) начинает эмитить данные сразу, независимо от наличия подписчиков. Подписчики получают только новые данные после подписки. Пример — StateFlow или SharedFlow.

Холодный поток (Cold stream) начинает эмитить данные только при наличии подписчика, и каждый подписчик получает полный набор данных. Пример — Flow из корутин.

// Холодный поток
val coldFlow = flow {
    emit(1)
    emit(2)
}

// Горячий поток
val hotFlow = MutableStateFlow(0)