Comment annuler AsyncTask quand se termine l'activité?
-
22-09-2019 - |
Question
Dans mon activité, j'utilise plusieurs classes de AsyncTask.
Comment annuler AsyncTask quand se termine l'activité?
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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow