В настоящее время я использую asyncTask()
для фонового обмена растровыми изображениями по мере развития моей деятельности, и все работает нормально; пока я не закончу деятельность, в которой находится задача. Поток задачи переходит в состояние ожидания вместо того, чтобы быть уничтоженным? Я отменил и проверил также возвращаемое значение .isCancelled()
. На самом деле это не было бы проблемой, за исключением случаев, когда я снова перезапускаю свою деятельность из MAIN-активности, она фактически создаст новый поток для нового asyncTask()
; таким образом, оставив старый сидеть "в ожидании" на заднем плане? Это ошибка, или я просто неправильно использую эту функцию?
Android: правильно уничтожить asyncTask?
comment
Загляните в библиотеку Droid-fu. Это упрощает работу с asyncTask.
- person karnage   schedule 21.04.2011
Ответы (2)
AsyncTask использует пул потоков. Для вас нормально видеть 4/5 асинхронных задач на панели отладки. Просто убедитесь, что ваши асинхронные задачи не содержат сильных ссылок на действие (попробуйте сделать эти асинхронные задачи статическими внутренними классами (или отдельными классами событий) и пусть они содержат WeakReference для действия вместо сильной ссылки.
- Фоновая задача, диалоговое окно выполнения, смена ориентации - есть ли 100% рабочее решение?
- Потоки AsyncTask никогда не умирают
- Простое управление потоками - Java - Android
- и т. д.> Попробуйте выполнить поиск по запросу «пул потоков asynctask для Android», чтобы узнать больше.
person
Vincent Mimoun-Prat
schedule
21.04.2011
Так может ли это теоретически вызвать какой-то хаос потоковой передачи, когда поток уже жив и ждет
Tid
, когда создается новое действие, и он хочет использовать это Tid
?
- person While-E; 21.04.2011
Я думаю, вам следует использовать статическую переменную флага в своей функции doInBackground для завершения операции или цикла. Таким образом вы сможете достичь своей цели
person
Sunil Pandey
schedule
21.04.2011
Я пробовал это в сочетании с isCancelled (), но безрезультатно.
- person While-E; 21.04.2011