2012-12-04 2 views
1

Je crée une tâche asynchrone dans l'activitéB Oncreate(). Dans cette tâche je cours une boucle infinie doInBackground() Pendant que je passe à l'activité précédente et que je reviens à l'activité B, une autre tâche asynchrone a été créée.Est-il possible d'arrêter asynctask pendant l'exécution de doInBackground?

Mon problème est maintenant deux infinie alors que la boucle est en cours d'exécution. Est-il possible d'arrêter la tâche asynchrone quand je passe à l'activité précédente?

+0

Mettez ''! IsCancelled() '' dans votre condition de boucle puis appelez '' asyncTask.cancel (boolean); '' –

+0

Où j'ai besoin d'appeler asyncTask.cancel (booléen) ;? Fonction OnBackPressed? – Vignesh

+0

Merci beaucoup Trafalgar, son travail génial. – Vignesh

Répondre

2

... Bien sûr, consulter isCancelled():

public Void doInBackground(....) { 

    while(!isCancelled()) { 
     ...endless activity... 
    } 

    return null; 
} 
+0

Merci beaucoup 323go, son travail génial. – Vignesh

2

Il existe une méthode Cancel(), mais appeler cancel(boolean mayInterruptIfRunning) ne s'arrête pas nécessairement l'exécution du processus d'arrière-plan. Tout ce qui se passe habituellement est que la tâche AsyncTask exécutera onCancelled(), et ne fonctionnera pas onPostExecute() quand elle se termine.

Voir la documentation (« Annulation d'une tâche async » section)

http://developer.android.com/reference/android/os/AsyncTask.html

Je passe en revue la conception de votre application et re travailler pour que cette condition ne se pose pas au lieu d'essayer d'annuler en cours d'exécution Async les tâches.

Questions connexes