Приведи пример горячих потоков данных

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

Ответ

Горячие потоки данных (Hot Streams) начинают эмитировать данные сразу при создании, даже без подписчиков. Типичный пример - StateFlow и SharedFlow в Kotlin.

val hotFlow = MutableStateFlow(0) // Начинает эмитить сразу

// Подписываемся через 2 секунды
lifecycleScope.launch {
    delay(2000)
    hotFlow.collect { value ->
        println("Received: $value") // Может пропустить начальные значения
    }
}

// Эмитим значения
lifecycleScope.launch {
    repeat(5) { i ->
        hotFlow.value = i
        delay(500)
    }
}

Ключевые особенности:

  • Данные теряются, если нет активных подписчиков
  • Все подписчики получают одинаковые данные
  • Часто используется для состояний UI или событий