Для чего нужна suspend-функция

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

Ответ

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

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

  • Могут вызываться только из корутины или другой suspend-функции
  • Не блокируют поток выполнения
  • Упрощают асинхронный код, делая его последовательным

Пример:

suspend fun fetchUserData(): User {
    return withContext(Dispatchers.IO) {
        // имитация сетевого запроса
        delay(1000)
        User("John")
    }
}