Что такое launch{}

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

Ответ

launch{} — это функция-билдер из kotlinx.coroutines, которая запускает новую корутину без блокировки текущего потока. По умолчанию корутина выполняется в контексте родительской корутины или Dispatchers.Default, если родителя нет.

Пример:

GlobalScope.launch {
    val result = fetchData() // suspend-функция
    withContext(Dispatchers.Main) {
        updateUI(result)
    }
}

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

  • Не возвращает результат (для этого используют async{})
  • Может быть отменена через Job.cancel()
  • По умолчанию перехватывает исключения и передает их родителю
  • Работает в фоне, не блокируя UI-поток