Sobes.tech
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-chave suspend antes 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 suspend indica 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.