Вопрос

В своей деятельности я использую несколько классов 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.Вы не можете их удалить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top