Вы должны определить свою функцию с модификатором suspend
, если вы вызываете другую функцию suspend
оттуда.Например, рассмотрим следующий случай:
suspend fun backTask(): Int = withContext(Dispatchers.IO) {
// Might take a few seconds, runs in background thread.
10
}
Здесь мы вызываем suspend fun withContext()
и добавляем модификатор suspend
к функции backTask
.Если мы этого не сделаем, компилятор выдаст ошибку Функция приостановки withContext
должна вызываться только из сопрограммы или другой функции приостановки .В этом случае, используя сопрограмму, мы можем вызвать функцию backTask
без блокировки основного потока:
GlobalScope.launch(Dispatcher.Main) {
val num = backTask() // not blocking the Main Thread
toast("Number: $num")
}
Примечание: GlobalScope.launch
не рекомендуется использовать .