取消的AsyncTask挂起新的HttpRequests

时间:2011-02-02 21:58:05

标签: android httprequest android-asynctask

我遇到了asynctasks和http请求的问题。

用户可以按两个不同的按钮。两个按钮都从Web服务器下载信息。我希望请求可以取消。在每次通话之前,会显示progressdialog。

http请求是在asynctask中执行的,我在progressdialog上有一个OnDismiss监听器,如果按下后面,它会取消asynctask。

它的工作时间为50/50。

如果我执行http请求,取消asynctask,然后执行新请求,它可能会起作用,但它也可能导致http请求无限挂起。

此行是它挂起的地方:

response = httpclient.execute(urlConnection, context);

有没有其他方法可以取消可取消的电话,或者我可以做些什么来避免挂起?

2 个答案:

答案 0 :(得分:1)

我写了一个AsyncTask来通过http执行一些下载,我发现在任务上调用cancel()实际上并没有阻止任务执行。 “已取消”任务将继续执行其后台操作。呼叫cancel()似乎只是致电onCancelled(),然后AsyncTask 在<{1}}完成后没有呼叫onPostExecute()。也许你的第一个任务仍然拥有下一个任务所需的一些网络资源?

答案 1 :(得分:1)

尝试拨打

httpclient.getConnectionManager().shutdown();