Что такое suspend функция в Kotlin

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

Ответ

suspend функции в Kotlin — это функции, которые могут быть приостановлены и возобновлены без блокировки потока. Они используются в корутинах для асинхронных операций (например, сетевых запросов или работы с БД).

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

  • Вызываются только из корутины или другой suspend функции.
  • Не блокируют поток во время ожидания (например, delay()).
  • Компилятор преобразует их в конечный автомат с коллбэками.

Пример:

suspend fun fetchData(): String {
    delay(1000) // Не блокирует поток!
    return "Data loaded"
}

Использование:

viewModelScope.launch {
    val data = fetchData() // Вызов suspend функции
    textView.text = data
}

⚠️ Без корутины или suspend контекста такой код не скомпилируется.