Ответ
Suspend-функции можно запустить только из корутины или другой suspend-функции. Основные способы:
- Coroutine builders (launch, async, runBlocking):
GlobalScope.launch {
mySuspendFunction()
}
- Жизненный цикл корутин (viewModelScope, lifecycleScope):
viewModelScope.launch {
fetchData()
}
- Прямой вызов из другой suspend-функции:
suspend fun wrapper() {
mySuspendFunction()
}
Важно: нельзя вызывать suspend-функции напрямую из обычного кода без корутин-билдеров. Для интеграции с Java-кодом можно использовать runBlocking, но это блокирует поток.