Используешь ли Coroutine Flow

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

Ответ

Да, использую. Flow — это холодный асинхронный поток данных в Kotlin, построенный на корутинах. Он отлично подходит для обработки последовательных значений, особенно в UI (например, обновления из БД или сетевых запросов).

Пример:

fun fetchData(): Flow<String> = flow {
    repeat(3) {
        delay(1000)
        emit("Item $it")
    }
}

// Коллектим в UI
lifecycleScope.launch {
    fetchData().collect { value ->
        textView.text = value
    }
}

Плюсы:

  • Отмена через корутины
  • Операторы (map, filter, debounce)
  • Интеграция с Jetpack (Room, LiveData)

Нюансы:

  • Холодный поток: запускается при каждой подписке
  • Для горячих потоков — SharedFlow/StateFlow