Maison >Java >javaDidacticiel >Comment puis-je communiquer entre les threads d'un service Android à l'aide d'un gestionnaire ?
Communication cross-thread dans les services Android
Dans un service Android, où vous utilisez des threads pour diverses tâches en arrière-plan, vous pouvez rencontrer des situations où un thread doit communiquer avec le thread principal. Plus précisément, vous souhaiterez peut-être publier des tâches, telles que Runnables, dans la file d'attente de messages du thread principal à partir d'un thread d'arrière-plan.
Pour réaliser cette communication, vous pouvez exploiter la classe Handler. En obtenant le gestionnaire associé au thread principal, vous obtenez la possibilité de publier des messages ou des runnables sur le thread principal à partir de votre autre thread. Voici comment y parvenir :
1. Utilisation du Context :
Si votre thread d'arrière-plan a accès à un objet Context (par exemple, le contexte d'application ou le contexte de service), vous pouvez obtenir le gestionnaire du thread principal en utilisant le code suivant :
Handler mainHandler = new Handler(context.getMainLooper());
Une fois que vous avez le gestionnaire principal, vous pouvez publier des tâches sur le fil de discussion principal :
Runnable myRunnable = new Runnable() { @Override public void run() {....} // Your code }; mainHandler.post(myRunnable);
2. Sans Context :
Dans les cas où votre thread d'arrière-plan n'a pas d'objet Context, vous pouvez obtenir le Handler du thread principal en utilisant le code suivant :
Handler mainHandler = new Handler(Looper.getMainLooper());
Similaire au précédent approche, vous pouvez publier des tâches sur le thread principal à l'aide du gestionnaire principal :
Runnable myRunnable = new Runnable() { @Override public void run() {....} // Your code }; mainHandler.post(myRunnable);
En utilisant ces techniques, vous pouvez communiquer efficacement entre les threads dans un Service Android, permettant l'exécution et la coordination de tâches multi-threads.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!