Как отменить AsyncTask, когда активность заканчивается? - PullRequest
4 голосов
/ 28 марта 2010

В своей деятельности я использую несколько классов AsyncTask.

Как отменить AsyncTask после завершения действия?

Ответы [ 3 ]

7 голосов
/ 13 декабря 2012

я думаю, что лучшее место для этого - 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
    }
}
2 голосов
/ 17 октября 2011

Поток asynctask сохраняется в пуле потоков для будущих версий AsyncTask.Вы не можете удалить их.

2 голосов
/ 28 марта 2010

Я не понимаю, означает ли "отмена" откат, но у вас есть метод cancel в классе AsyncTask .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...