Je veux arrêter un thread AsyncTask
d'un autre thread AsyncTask
. J'ai essayé comme new AsyncTask.cancel(true)
d'arrêter le processus d'arrière-plan mais cela ne s'est pas arrêté.
Quelqu'un pourrait-il m'aider à ce sujet?
Je veux arrêter un thread AsyncTask
d'un autre thread AsyncTask
. J'ai essayé comme new AsyncTask.cancel(true)
d'arrêter le processus d'arrière-plan mais cela ne s'est pas arrêté.
Quelqu'un pourrait-il m'aider à ce sujet?
La raison pourquoi les choses ne s'arrête pas pour vous, c'est parce que le processus (doInBackground()) s'exécute jusqu'à ce qu'il soit terminé. Par conséquent, vous devriez vérifier si le fil est annulé ou pas avant de faire des trucs:
if(!isCancelled()){
// Do your stuff
}
Donc en gros, si le fil n'est pas annulé, il, sinon l'ignorer :) Il pourrait être utile de vérifier quelques fois lors de votre opération, en particulier avant le temps de prendre des trucs.
En outre, il pourrait être utile de le "nettoyer" alittle en
onCancelled();
Documentation pour AsyncTask:
http://developer.android.com/reference/android/os/AsyncTask.html
Espérons que cette aide!
J'ai eu un problème similaire - en gros, je recevais un NPE dans une tâche asynchrone après que l'utilisateur ait détruit le fragment. Après avoir étudié le problème du débordement de pile, j'ai adopté la solution suivante:
volatile boolean running;
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
running=true;
...
}
public void onDestroy() {
super.onDestroy();
running=false;
...
}
Ensuite, je vérifie "si je cours" périodiquement dans mon code asynchrone. J'ai déjà testé cela et je suis maintenant incapable de "casser" mon activité. Cela fonctionne parfaitement et a l'avantage d'être plus simple que certaines des solutions que j'ai vues sur SO.
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.