Как отменить AsyncTask после завершения активности?
-
22-09-2019 - |
Вопрос
В своей деятельности я использую несколько классов AsyncTask.
Как отменить AsyncTask после завершения активности?
Другие советы
я думаю, лучшее место для этого — это 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);
}
}
в своей задаче я затем проверяю как можно чаще, если отмена назывался
protected String doInBackground(String... arg0) {
if (this.isCancelled()) {
return null;
}
}
и, конечно же, не забудьте удалить данные, которые могут быть возвращены, поскольку для их получения больше нет активности.
protected void onPostExecute(List<UserStatus> result) {
if(!this.isCancelled()) {
//pass data to receiver
}
}
Поток asynctask сохраняется в пуле потоков для будущих запусков AsyncTask.Вы не можете их удалить.
Не связан с StackOverflow