2 votes

Remplacement du HandlerThread dans les Coroutines

J'ai un code qui utilise un seul HandlerThread avec un Handler pour lui envoyer des messages. Existe-t-il un moyen de faire cela avec des coroutines ? Je ne veux pas créer une nouvelle coroutine à chaque fois, je veux juste exécuter des blocs de code sur le HandlerThread. Merci de m'aider.

3voto

Roman Elizarov Points 8871

Si vous souhaitez exécuter un bloc de code dans le thread principal d'Android, vous pouvez utiliser la fonction UI contexte de kotlinx-coroutines-android module comme celui-ci :

launch(UI) { 
    ... // this block of code will be executed in main thread
}

L'extrait ci-dessus envoie un message au gestionnaire principal pour qu'il exécute votre code.

Si vous recherchez un fil de traitement personnalisé pour le travail en arrière-plan, vous pouvez créer un contexte monofilaire de deux manières.

Approche générique : Utiliser newSingleThreadedContext() comme ça :

val ctx = newSingleThreadedContext() // define your context

launch(ctx) { ... } // use it to submit your code there

Approche spécifique à Android : Créer un nouvel Android Handler utiliser Handler.asCoroutineDispatcher() pour le convertir en extension de contexte coroutines. Vous pourrez alors utiliser launch pour envoyer vos blocs de code à l'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X