Как остановить поток ASyncTask в android
can anybody have any idea how to stop ASyncTask thread in android?.
На самом деле у меня есть цикл, который создает потоки и выполняет их. и когда этот цикл закончится, я хочу остановить все запущенные потоки.
есть все равно, чтобы остановить потоки?
Большое спасибо.
Ответы
Ответ 1
В моем опыте с AsyncTask
вызов cancel(boolean mayInterruptIfRunning)
не обязательно останавливает выполнение фонового процесса. Все, что кажется, состоит в том, что AsyncTask
выполнит onCancelled()
, а не выполнит onPostExecute()
при завершении. Поведение, вероятно, зависит от того, какой код у вас есть в doInBackgound()
Ответ 2
В моем случае я выполняю запросы сервера с HttpPost, HttpGet и так далее. Единственный способ, которым я нашел закончить AsyncTask, - это вызвать метод abort(), как вы можете видеть в следующем примере
if (isCancelled) {
try {
//cancel the task and immediately abort the HttpRequest
uploadTask.cancel(true);
post.abort();
} catch (UnsupportedOperationException e) {
e.printStackTrace();
}
}