Отмена загрузки файла с помощью httpclient и asynctask - PullRequest
6 голосов
/ 22 февраля 2011

В моем приложении мне нужно загружать файлы из URL-адресов. Я хочу отобразить ход загрузки в диалоговом окне (или при желании в области уведомлений). Я наткнулся на несколько хороших ресурсов на эту тему (что-то вроде http://progrnotes.blogspot.com/2010/09/c-android.html). К сожалению, все примеры не дают четкого указания о том, как правильно отменить загрузку в соответствии с запросом пользователя. Так что мой вопрос на самом деле довольно просто:

С учетом асинхронной задачи, которая загружает файл в фоновом режиме (с httpclient) и отображает диалоговое окно с ходом загрузки и кнопкой отмены, как я могу отменить загрузку и остановить фоновую задачу при нажатии кнопки?

Я знаю, что уничтожение потоков, как правило, не очень хорошая идея, поэтому мне, вероятно, придется работать с переменной 'cancel' в моем фоновом потоке. Как передать сигнал остановки с кнопки на асинхронную задачу?

С уважением, Ivo

Ответы [ 3 ]

3 голосов
/ 22 февраля 2011

Я бы назвал cancel (true) для вашего объекта AsyncTask.Это прервет ваш поток с помощью обычной обработки прерываний .Затем вы можете спросить AsyncTask, если isCancelled () .

3 голосов
/ 22 февраля 2011

Сделайте так, чтобы ваша кнопка позвонила AsyncTask.cancel(true) и затем проверила isCancelled() изнутри doInBackground(Params... params). Таким образом, вы можете сообщить фоновому потоку, что загрузка должна быть отменена, и вы можете предпринять соответствующие шаги, чтобы остановить его.

0 голосов
/ 05 августа 2014

Я бы предложил вам пройти по этой ссылке для темной стороны AsyncTasks : http://bon -app-etit.blogspot.in / 2013/04 / the-dark-side -of-asynctask.html .

Google выпустил библиотеку "Volley", которая в настоящее время используется для более быстрой и качественной работы в сети.

Это решает Плохие точки AsyncTasks.

Отмена запроса с использованием залпа

...