Откуда можно запустить suspend функцию

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

Ответ

Suspend-функции можно запустить только из корутины или другой suspend-функции. Основные способы:

  1. Coroutine builders (launch, async, runBlocking):
GlobalScope.launch { 
    mySuspendFunction() 
}
  1. Жизненный цикл корутин (viewModelScope, lifecycleScope):
viewModelScope.launch {
    fetchData()
}
  1. Прямой вызов из другой suspend-функции:
suspend fun wrapper() {
    mySuspendFunction() 
}

Важно: нельзя вызывать suspend-функции напрямую из обычного кода без корутин-билдеров. Для интеграции с Java-кодом можно использовать runBlocking, но это блокирует поток.