5 conseils pour simplifier l’adoption des coroutines Kotlin
- Utilisez le support intégré des bibliothèques.
De nombreuses bibliothèques ont ajouté un support coroutine «prêt à l’emploi». Pour éviter de créer des convertisseurs et adaptateurs personnalisés, il est judicieux de tirer parti de ce que les bibliothèques fournissent «gratuitement».
Par exemple, Retrofit (2.6.0 et supérieur) prend en charge la réalisation de vos demandes réseau suspendre les fonctions. Ce qui vous donne une belle syntaxe concise de son utilisation vs avoir à utiliser le « basique » onResponse et onError Retrofit callback structure.
Donc, ce morceau de code ci-dessous
sera transformé en ce
Je pense que cela semble assez bon! 🙂
Avec Retrofit, Room 2.1 et les versions ultérieures ont un support intégré pour les coroutines. Vous pouvez marquer vos méthodes DAO comme suspendre pour permettre une syntaxe concise, un code linéaire agréable et en s’assurant qu’ils ne peuvent être exécutés que dans vos blocs de code asynchrone. Il y a un article très détaillé de Florina Muntenescu ici vous souhaitez en savoir plus sur le support Room.
Ainsi, lorsque vous décidez de la bibliothèque à utiliser, vérifiez la prise en charge prête à l’emploi et utilisez celles qui la fournissent.
2. Utilisez les étendues coroutine par défaut.
CoroutineScope définit une portée pour de nouvelles coroutines. Chaque constructeur de coroutine est une extension de CoroutineScope et hérite de son coroutineContext pour propager automatiquement les éléments de contexte et l’annulation. Chaque constructeur de coroutine (comme lancement, async, etc.) et toutes les fonctions de cadrage (comme coroutineScope, withContext, etc.) offre sa propre portée.
La mise en œuvre manuelle vous ralentira et sera très sujette aux erreurs. Même la documentation elle-même déconseille cela. Utilisez donc les générateurs de portée existants et pour rendre votre adoption plus rapide et plus robuste.
3. Utilisez les répartiteurs coroutine par défaut.
Le contexte coroutine comprend un répartiteur de coroutine (CoroutineDispatcher) qui détermine le ou les threads que la coroutine correspondante utilise pour son exécution. Le répartiteur de coroutine peut confiner l’exécution de la coroutine à un thread spécifique, le répartir dans un pool de threads ou le laisser s’exécuter de manière non confinée.
Tous les constructeurs de coroutine aiment lancement et async accepter une option CoroutineContext paramètre qui peut être utilisé pour spécifier explicitement le répartiteur pour la nouvelle coroutine et d’autres éléments de contexte.
Créer votre propre répartiteur personnalisé et affiner des éléments tels que le pool de threads et la gestion des threads est bien sûr une option, mais pour un démarrage rapide, il est plus logique d’utiliser l’un des paramètres par défaut déjà optimisés pour différents cas d’utilisation.
Voici un extrait de la documentation, il existe plusieurs options par défaut.
4. Tirez parti de l’intégration approfondie des composants d’architecture.
Assez récemment, Google a introduit une intégration plus approfondie de la coroutine pour les composants d’architecture. Cela comprenait l’introduction de portées personnalisées pour ViewModel et Propriétaire, en plus d’avoir un Données en direct constructeur de coroutine.
Vous pouvez utiliser viewModelScope ou viewLifecycleOwner étendues afin de fournir une prise en charge prête à l’emploi pour l’annulation automatique et rendre vos coroutines plus intelligentes sur le cycle de vie de l’application. Cela vous aidera à économiser des ressources et à faciliter la gestion du cycle de vie à cet égard. Vous n’aurez pas à vous soucier des annulations coopératives ou AnnulationException dans ce cas, car la gestion de ceux-ci est déjà prédéfinie pour vous.
le Données en direct Le constructeur vous fournira une belle syntaxe et permettra de calculer les valeurs de manière asynchrone, puis de mettre à jour vos observateurs et tout cela de manière concise. Par exemple, vous souhaiterez peut-être récupérer les préférences d’un utilisateur et les fournir à votre observateur. Tout comme ci-dessous, vous créerez un Données en direct qui va émettre votre valeur lors du calcul.
5. Découvrez différents constructeurs et suspendez / fonctions en ligne pour une syntaxe concise.
Il y a plusieurs constructeurs de coroutine, des fonctions de suspension et des fonctions en ligne fournies par Kotlin sdk lui-même qui peuvent être utilisées à l’intérieur des coroutines.Ils peuvent fournir une syntaxe agréable et concise que vous devriez utiliser à votre avantage lors de l’adoption de coroutines car le code asynchrone peut parfois être difficile à suivre en raison de sa syntaxe verbeuse dans de nombreux cas. L’exemple ci-dessous utilise 4 solutions prêtes à l’emploi (lancement (constructeur coroutine), répéter (hors de la boîte en ligne amusant), retard (hors de la boîte suspendre le plaisir), println (hors de la boîte amusant en ligne)) et vous pouvez observer à quel point le code est concis.