Ответ
В Android чаще всего используется viewModelScope (для ViewModel) и lifecycleScope (для Activity/Fragment).
viewModelScope автоматически отменяется при очистке ViewModel (onCleared), предотвращая утечки:
viewModelScope.launch {
val data = repository.fetchData()
updateUi(data)
}
lifecycleScope привязан к жизненному циклу компонента (например, onDestroy для Activity):
lifecycleScope.launch {
loadData()
}
Оба используют Dispatchers.Main по умолчанию, но можно переключить контекст (например, Dispatchers.IO).