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.
Réponse
Trop de publicités?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.