Bases des coroutines et des portées
Lancez les coroutines dans la portée appropriée.
Bases des coroutines et des portées est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.
Que sont les coroutines ?
Les coroutines vous permettent d'écrire du code asynchrone et non bloquant dans un style séquentiel. Elles constituent la solution de Kotlin aux rappels et aux threads pour des tâches comme les entrées-sorties réseau et de base de données.
Fonctions suspendues
Une fonction marquée suspend peut se mettre en pause sans bloquer le thread, puis reprendre ultérieurement. Elle ne peut être appelée que depuis une coroutine ou une autre fonction suspendue.
suspend fun fetchUser(): User {
delay(1000) // non-blocking pause
return User(1, "Ada", "ada@x.com")
}Suspension ou blocage
delay suspend la coroutine, mais libère le thread pour d'autres tâches. Thread.sleep bloque le thread entier. Les coroutines privilégient la suspension pour rester efficaces.
Lancer une coroutine
Démarrez une coroutine avec launch sur un CoroutineScope. Elle s'exécute en parallèle et ne renvoie aucun résultat.
scope.launch {
val user = fetchUser()
println(user.name)
}Obtenir un résultat avec async
Utilisez async lorsque vous avez besoin de récupérer une valeur. Il renvoie un objet Deferred sur lequel vous utilisez await.
val deferred = scope.async { fetchUser() }
val user = deferred.await()Qu'est-ce qu'un CoroutineScope ?
Un scope définit la durée de vie des coroutines qui y sont lancées. Si vous annulez le scope, toutes ses coroutines sont annulées. C'est ce qu'on appelle la concurrence structurée.
Concurrence structurée
Comme les coroutines vivent à l'intérieur d'un scope, elles ne peuvent pas le dépasser accidentellement. Cela évite les fuites : lorsque l'écran disparaît, son scope est annulé et son travail s'arrête.
Annulation
L'annulation d'un scope ou d'un travail déclenche une CancellationException au prochain point de suspension, ce qui arrête proprement la coroutine.
val job = scope.launch { /* work */ }
job.cancel() // stops it cooperativelyAnnulation coopérative
Les coroutines doivent coopérer : les longues boucles qui sollicitent le processeur doivent vérifier isActive ou appeler une fonction suspendue afin que l'annulation puisse prendre effet.
while (isActive) {
// do a chunk of work
}Exceptions dans les coroutines
Une exception non interceptée dans un launch se propage au scope et annule ses coroutines sœurs (sauf si vous utilisez un SupervisorJob). Gérez les erreurs avec try/catch ou un CoroutineExceptionHandler.
Pourquoi les scopes sont importants sous Android
Android fournit des scopes prêts à l'emploi liés aux cycles de vie des composants — comme viewModelScope et lifecycleScope — afin que vos coroutines soient automatiquement annulées au moment approprié. C'est le sujet de la prochaine leçon.
Vérification rapide
Testez votre compréhension des scopes de coroutine.
Récapitulatif
Vous avez appris que :
- Les fonctions
suspendse mettent en pause sans bloquer. launchdémarre un travail sans résultat à récupérer ;asyncrenvoie un résultat.- Un CoroutineScope délimite la durée de vie des coroutines (concurrence structurée).
- L'annulation est coopérative.
Questions Fréquemment Posées
La leçon « Bases des coroutines et des portées » est-elle gratuite ?
Oui — le texte complet de « Bases des coroutines et des portées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Bases des coroutines et des portées » ?
Lancez les coroutines dans la portée appropriée. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Bases des coroutines et des portées » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Bases des coroutines et des portées
- viewModelScope et Dispatchers
- Bases de Kotlin Flow
- StateFlow et SharedFlow