Annuler et synchroniser des coroutines
Dans les exemples précédents utilisant les trois constructeurs runBlocking, launch et async, nous n’avons stocké le résultat que pour le constructeur async afin d’attendre la fin de la coroutine.
Il est également possible de stocker le résultat du constructeur launch dans une variable. L’objet renvoyé est de type Job. Tout comme l’objet renvoyé par le constructeur async (pour mémoire, le type de cet objet est Deferred, mais ce type hérite du type Job). Job
Nous avons eu un aperçu de l’utilité d’un objet de type Job grâce au constructeur async. Il permet non seulement d’attendre la fin de l’exécution de la coroutine, mais aussi d’obtenir de précieuses informations sur celle-ci et de la manipuler.
1. Connaître l’état d’une coroutine
Un objet de type Job permet d’obtenir des informations sur le cycle de vie de la coroutine, notamment grâce à trois propriétés booléennes :
-
isActive : sa valeur est true quand la coroutine a démarré et qu’elle n’est pas terminée. isActive
-
isCompleted : sa valeur est true quand la coroutine est terminée. isCompleted
-
isCancelled : sa valeur est true quand la coroutine a été annulée. isCancelled
Soit un programme très simple dont le but est de lancer une coroutine, de la suspendre pendant 100 millisecondes...