Honnêtement, je ne peux pas le comprendre - J'ai entendu dire que thread.stop()
n'est pas une bonne chose à utiliser. Cela ne fonctionne pas non plus pour moi. Comment faire pour que les threads/gestionnaires arrêtent de fonctionner?Comment arrêter threads et gestionnaires dans Android
Répondre
Les fils doivent être terminés de manière "polie". Vous devriez construire un mécanisme pour que votre thread s'arrête. Vous pouvez avoir un paramètre booléen volatile qui est vérifié sur chaque boucle de votre fil (en supposant que vous avez des boucles là-dedans) comme ceci:
while (!threadStop) {
// Do stuff
}
Et vous pouvez définir la valeur booléenne false d'un autre thread (assurez-vous vous gérez tous les problèmes de synchronisation) et votre thread s'arrêtera dans l'itération suivante.
La bonne façon d'arrêter un gestionnaire est: handler.getLooper().quit();
je mets en œuvre habituellement en envoyant un message à quitter handler qui se termine.
La bonne façon d'arrêter un thread générique est: thread.interrupt();
Le fil qui est besoins arrêté pour gérer l'interruption:
if(isInterrupted())
return;
Cela peut être mis dans une boucle si vous le souhaitez:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
try {
while(!isInterrupted() && (line = br.readLine()) != null) {
// Do stuff with the line
}
}
catch(IOException e) {
// Handle IOException
}
catch(InterruptedException e) {
// Someone called interrupt on the thread
return;
}
Thread.interrupt() ne doit pas être utilisé. Voir le commentaire ci-dessus. – Moritz
vous pouvez l'utiliser comme ça ..
Thread mythread=new Thread();
if(!mythread){
Thread dummy=mythread;
mythread=null;
dummy.interrupt();
}
ou vous pouvez utiliser
mythread.setDeamon(true);
Quelle langue est-ce? 'if (! mythread)' ne fonctionnera pas en Java. –
Ok la réponse à arrêter les discussions ont été faites. Pour arrêter gestionnaire, vous devez utiliser cette méthode suivante:
removeCallbacksAndMessages from Handler class comme celui-ci
myHandler.removeCallbacksAndMessages(null);
Cela devrait être la réponse choisie, juste un peu d'information. Vérifiez si votre gestionnaire n'est pas nul avant d'utiliser ce qui précède. – User3
- 1. Gestionnaires et threads dans Android
- 2. Programmation Threads et gestionnaires dans Android?
- 3. Arrêter les threads
- 4. Processus et threads dans android
- 5. Comment arrêter les threads en Java?
- 6. Comment arrêter mes threads en Java
- 7. Emplacement et threads Android
- 8. threads android: arrêter un thread avec un lourd calcul
- 9. Réseaux et threads Android
- 10. Android - ProgressDialogs et Threads
- 11. Comment arrêter LocationUpdates dans Android
- 12. Comment créer des gestionnaires pour les threads de travail?
- 13. Javascript: Comment arrêter plusieurs gestionnaires d'erreurs jQuery ajax?
- 14. Comment tuer ou arrêter d'autres threads dans l'applet java
- 15. jQuery - comment arrêter les utilisateurs spammer gestionnaires d'événements
- 16. comment démarrer et arrêter le capteur android
- 17. Comment arrêter/à bord des threads si timeout dans VB.NET
- 18. Android - notifyDataSetChanged() et les threads
- 19. démarrer et arrêter des threads à partir d'ASP.NET
- 20. Comment arrêter thread gestionnaire dans Android?
- 21. Comment arrêter la tâche en cours d'exécution dans un exécuteur de pool de threads Android
- 22. android comment arrêter mHandler.postDelayed
- 23. Threads Android et Open GL
- 24. android comment arrêter gps
- 25. comment arrêter/android CountDownTimer
- 26. Valeur constante android ProgressBar sans fil et gestionnaires
- 27. Comment Android/DalvikVM traitent-ils les gestionnaires?
- 28. Les threads de signalisation à arrêter
- 29. Comment arrêter et redémarrer l'émulateur par le code dans Android?
- 30. comment arrêter l'application de l'ouverture dans android
Jetez un oeil à ceci: http://stackoverflow.com/questions/671049/how-do-you-kill- un-thread-en-java. – Malcolm