Ответ
launch{} — это функция-билдер из kotlinx.coroutines, которая запускает новую корутину без блокировки текущего потока. По умолчанию корутина выполняется в контексте родительской корутины или Dispatchers.Default, если родителя нет.
Пример:
GlobalScope.launch {
val result = fetchData() // suspend-функция
withContext(Dispatchers.Main) {
updateUI(result)
}
}
Ключевые особенности:
- Не возвращает результат (для этого используют
async{}) - Может быть отменена через
Job.cancel() - По умолчанию перехватывает исключения и передает их родителю
- Работает в фоне, не блокируя UI-поток