Question

Dans mon activité, j'utilise plusieurs classes de AsyncTask.

Comment annuler AsyncTask quand se termine l'activité?

Était-ce utile?

La solution

Je ne comprends pas si votre « annuler » signifie rollback mais vous avez un annuler sur le la classe de AsyncTask.

Autres conseils

Je pense que le meilleur endroit pour le faire est onStop

protected void onStop() {
    super.onStop();

    /*
    * The device may have been rotated and the activity is going to be destroyed
    * you always should be prepared to cancel your AsnycTasks before the Activity
    * which created them is going to be destroyed.
    * And dont rely on mayInteruptIfRunning
    */
    if (this.loaderTask != null) {
        this.loaderTask.cancel(false);
    }
}

i puis vérifier dans ma tâche aussi souvent que possible si cancel a été appelé

protected String doInBackground(String... arg0) {
    if (this.isCancelled()) {
        return null;
    }
}

et bien sûr ne pas oublier de déposer des données que peut-être retourné car il n'y a pas plus d'activité pour recevoir

protected void onPostExecute(List<UserStatus> result) {
    if(!this.isCancelled()) {
        //pass data to receiver
    }
}

Le fil de AsyncTask est maintenu en vie dans un pool de threads pour les cas futurs de AsyncTask. Vous ne pouvez pas les supprimer.

scroll top