2014-05-17 2 views
0

J'annule la tâche en cours à l'intérieur de doInBackground en appelant cancel(false) lorsqu'une exception est survenue. Comme j'appelle annuler (faux), la tâche en cours d'exécution se terminera et onCancelled sera appelée. maintenant à l'intérieur du onCancelled je veux ré-exécuter la même tâche en appelant execute() mais je reçois l'erreur suivante à execute() fonction appelRedémarrer l'exécution de AsyncTask à l'intérieur de OnCancelled

E/AndroidRuntime(30430): FATAL EXCEPTION: main 
java.lang.IllegalStateException: Cannot execute task: the task is already running. 

Répondre

3

Vous ne pouvez pas exécuter un AsyncTask plus d'une fois.

Vous devez créer une nouvelle instance de la tâche, comme: new MyAsyncTask().execute();

0

Vous ne pouvez pas le faire, l'homme! Une asyncTask a un cycle de vie, représenté dans son état interne. Il ne peut être exécuté qu'une seule fois. Consultez la section "Règles de filetage" here.

0

Comme la documentation dit: « La tâche peut être exécutée qu'une seule fois (une exception sera levée si une seconde exécution est tentée.) »

AsyncTask

0

vous devez annuler la tâche async par caliing yourAsyncTask .cancel (true) et vous pouvez vérifier avant d'exécuter votre tâche asynchrone si elle est déjà en cours d'exécution en obtenant son statut