Android Annuler AsyncTask


Exemple

YourAsyncTask task = new YourAsyncTask();
task.execute();
task.cancel();

Cela n'arrête pas votre tâche si elle était en cours, elle définit simplement le drapeau annulé qui peut être vérifié en vérifiant la valeur de retour de isCancelled() (en supposant que votre code est en cours d'exécution) en procédant comme isCancelled() :

class YourAsyncTask extends AsyncTask<Void, Void, Void> {
    @Override
    protected Void doInBackground(Void... params) {
        while(!isCancelled()) {
            ... doing long task stuff
            //Do something, you need, upload part of file, for example
            if (isCancelled()) {    
                return null; // Task was detected as canceled
            }
            if (yourTaskCompleted) {
                return null;
            }
        }
    }
}

Remarque

Si une AsyncTask est annulée alors que doInBackground(Params... params) est toujours en cours d'exécution, la méthode onPostExecute(Result result) ne sera PAS appelée après le doInBackground(Params... params) de doInBackground(Params... params) . AsyncTask appellera plutôt le onCancelled(Result result) pour indiquer que la tâche a été annulée pendant l'exécution.