Что делал с Coroutines

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

Ответ

Coroutines в Kotlin позволяют писать асинхронный код в последовательном стиле, избегая callback hell. Основные моменты:

  1. Запуск корутин – через launch (fire-and-forget) или async (с возвратом результата):
viewModelScope.launch {
    val data = async { fetchData() }.await()
    updateUI(data)
}
  1. КонтекстыDispatchers.IO для сетевых/дисковых операций, Dispatchers.Main для UI.

  2. Отмена – автоматическая при отмене родительской корутины или через job.cancel().

  3. Обработка ошибок – через try/catch или CoroutineExceptionHandler.

  4. Потоки – интеграция с Flow для реактивных данных.

Пример сетевого запроса:

viewModelScope.launch {
    try {
        val result = withContext(Dispatchers.IO) { api.getData() }
        _state.value = Success(result)
    } catch (e: Exception) {
        _state.value = Error(e)
    }
}

Использовал для: фоновых задач, параллельных запросов, работы с Room/Retrofit.