Для чего были придуманы Coroutines

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

Ответ

Coroutines упрощают асинхронное программирование, заменяя колбэки и сложные цепочки Thread/Handler. Они позволяют писать последовательный код, который выполняется асинхронно, без блокировки основного потока.

Преимущества:

  • Легковесность (могут работать тысячи корутин без нагрузки на систему)
  • Отмена операций (через Job или SupervisorJob)
  • Structured Concurrency (автоматическая отмена дочерних корутин)

Пример:

viewModelScope.launch {  
    val data = withContext(Dispatchers.IO) { fetchData() }  
    updateUI(data) // Автоматически возвращается в Main-поток  
}  

Работает на Dispatchers (IO, Default, Main), поддерживает suspend-функции.