Ответ
Suspend-функции позволяют выполнять длительные операции (сеть, БД и т.д.) без блокировки основного потока. Они работают в корутинах и могут быть приостановлены (suspend) без блокировки потока, а затем возобновлены (resume).
Ключевые особенности:
- Могут вызываться только из корутины или другой suspend-функции
- Не блокируют поток выполнения
- Упрощают асинхронный код, делая его последовательным
Пример:
suspend fun fetchUserData(): User {
return withContext(Dispatchers.IO) {
// имитация сетевого запроса
delay(1000)
User("John")
}
}