Middle
O que é uma função suspend em Kotlin?
sobes.tech IA
Resposta da IA
A função suspend — é uma função em Kotlin que pode ser "suspensa" (suspend) e posteriormente "retomada" (resume). É usada para escrever código assíncrono e não bloqueante em estilo imperativo, o que simplifica o trabalho com operações de longo prazo, como requisições de rede ou operações com banco de dados.
Características principais das funções suspend:
- Modificador
suspend: Declarada com a palavra-chavesuspendantes do nome da função. - Trabalho com corutinas: São chamadas apenas de outras funções suspend ou de construtores de corutinas (por exemplo,
launch,async). - Natureza não bloqueante: A suspensão de uma função suspend não bloqueia a thread na qual ela é executada. Em vez disso, a thread é liberada para realizar outras tarefas, e quando o resultado da operação assíncrona estiver pronto, a execução da função é retomada do ponto de suspensão.
- Marcação explícita: O modificador
suspendindica claramente que a chamada a essa função pode ser uma operação longa e não deve ser executada diretamente na thread principal (thread UI).
Exemplo:
// Função normal
fun fetchDataBlocking(): String {
// Chamada de rede bloqueante, pode travar
Thread.sleep(2000)
return "Dados recebidos"
}
// Função suspend
suspend fun fetchDataNonBlocking(): String {
// Chamada de rede assíncrona
// A coroutine é suspensa aqui, a thread não é bloqueada
delay(2000) // Exemplo de função suspend que simula um atraso
return "Dados recebidos de forma assíncrona"
}
Funções suspend são a base para construir código assíncrono fácil de ler e manter usando corutinas.