Sobes.tech
Middle

Qu'est-ce qu'une fonction suspendue en Kotlin?

sobes.tech IA

Réponse de l'IA

La fonction suspendue — c'est une fonction en Kotlin qui peut être "suspendue" (suspend) puis "reprendre" (resume). Elle est utilisée pour écrire du code asynchrone et non bloquant dans un style impératif, ce qui facilite la gestion d'opérations à long terme, telles que les requêtes réseau ou les opérations sur une base de données.

Caractéristiques clés des fonctions suspendues :

  • Modificateur suspend : Déclarée avec le mot-clé suspend avant le nom de la fonction.
  • Travail avec les coroutines : Appelée uniquement depuis d'autres fonctions suspendues ou depuis des constructeurs de coroutines (par exemple, launch, async).
  • Nature non bloquante : La suspension d'une fonction suspendue ne bloque pas le fil d'exécution. Au lieu de cela, le fil est libéré pour effectuer d'autres tâches, et lorsque le résultat de l'opération asynchrone est prêt, l'exécution de la fonction reprend depuis le point de suspension.
  • Marquage explicite : Le modificateur suspend indique clairement que l'appel à cette fonction peut être une opération longue et ne doit pas être exécuté directement sur le fil principal (fil UI).

Exemple :

// Fonction normale
fun fetchDataBlocking(): String {
    // Appel réseau bloquant, peut faire planter
    Thread.sleep(2000)
    return "Données reçues"
}

// Fonction suspendue
suspend fun fetchDataNonBlocking(): String {
    // Appel réseau asynchrone
    // La coroutine est suspendue ici, le fil n'est pas bloqué
    delay(2000) // Exemple de fonction suspend qui simule un délai
    return "Données reçues de manière asynchrone"
}

Les fonctions suspendues sont la base pour construire un code asynchrone facile à lire et à maintenir en utilisant des coroutines.