Работал ли с Flow в Coroutines

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

Ответ

Да, работал. Flow — это cold stream, который эмитит данные последовательно и может обрабатывать асинхронные операции. Отличается от LiveData тем, что не привязан к жизненному циклу и требует явной отмены через launch или lifecycleScope.

Пример:

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

// Collect в корутине
lifecycleScope.launch {
    fetchData().collect { value ->
        println(value) // "Value 0", "Value 1"...
    }
}

Использовал map, filter, catch для обработки ошибок. Для конвертации в LiveData применял asLiveData().