Android: очистить AsyncTask

1

Со временем мое приложение использовало много AsyncTasks, и я заметил в отладчике, что они не уходят, и даже когда они сделаны, они все еще отображаются как активный поток. Есть ли способ после выполнения задачи, чтобы сообщить сборщику мусора убить его?

  • 0
    возможный дубликат AsyncTask продолжает ждать?
  • 0
    Сделайте его пустым после окончания его использования, обычно в методе обратного вызова Activity.onDestroy ().
Теги:

1 ответ

1
Лучший ответ

EDIT: Lenik указал ниже, что мой первоначальный ответ не был правильным андроидным способом отменить AsyncTask.

AsyncTask имеет полную и элегантную систему для отмены. Вызовите метод cancel(true) в своей задаче, когда вы будете готовы отменить. Если вы используете внутренний цикл, используйте isCancelled() чтобы проверить состояние, и выйдите из цикла соответствующим образом, если он возвращает true. Это имеет дополнительное преимущество при вызове onCancelled(Object) в потоке пользовательского интерфейса после cancel(boolean) и doInBackground(Object[]). Затем установите для ссылки на свою задачу значение null.

Спасибо Ленику! Если вы опубликуете ответ, я удалю его, чтобы вы получили кредит.

  • 1
    есть ли причина использовать isInterrupted вместо существующих и хорошо документированных isCancelled() и AsyncTask.cancel() ?
  • 0
    Я этого не знал, спасибо! (пересмотрит мой ответ или, если вы предпочтете ответить, тоже хорошо.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню