Отменено AsyncTask висит новый HttpRequests - PullRequest
2 голосов
/ 03 февраля 2011

У меня проблема с асинхронными запросами и http-запросами.

Пользователь может нажимать две разные кнопки. Обе кнопки загружают информацию с веб-сервера. Я хочу, чтобы запросы были отменены. Перед каждым звонком отображается прогрессиалог.

http-запрос выполняется в асинхронной задаче, и у меня есть прослушиватель OnDismiss на ProgressDialog, который отменяет асинхронную задачу, если нажата кнопка возврата.

Работает 50/50.

Если я выполню http-запрос, отменим асинхронную задачу, затем сделаю новый запрос, он может работать, но это также может привести к бесконечному зависанию http-запроса.

В этой строке висит:

response = httpclient.execute(urlConnection, context);

Есть ли другой способ сделать звонок, который можно отменить, или я могу что-нибудь сделать, чтобы избежать зависания?

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Попробуйте позвонить

httpclient.getConnectionManager().shutdown();
1 голос
/ 03 февраля 2011

Я написал AsyncTask для выполнения некоторых загрузок по http и обнаружил, что вызов cancel() для задачи на самом деле не останавливает ее выполнение. «Отмененная» задача будет продолжать выполнять свои фоновые действия. Вызов cancel() просто, кажется, вызывает onCancelled(), а затем AsyncTask не вызывает onPostExecute(), когда он закончится. Возможно, ваша первая задача все еще имеет некоторый сетевой ресурс, который требуется для следующей задачи?

...