我遇到了asynctasks和http请求的问题。
用户可以按两个不同的按钮。两个按钮都从Web服务器下载信息。我希望请求可以取消。在每次通话之前,会显示progressdialog。
http请求是在asynctask中执行的,我在progressdialog上有一个OnDismiss监听器,如果按下后面,它会取消asynctask。
它的工作时间为50/50。
如果我执行http请求,取消asynctask,然后执行新请求,它可能会起作用,但它也可能导致http请求无限挂起。
此行是它挂起的地方:
response = httpclient.execute(urlConnection, context);
有没有其他方法可以取消可取消的电话,或者我可以做些什么来避免挂起?
答案 0 :(得分:1)
我写了一个AsyncTask
来通过http执行一些下载,我发现在任务上调用cancel()
实际上并没有阻止任务执行。 “已取消”任务将继续执行其后台操作。呼叫cancel()
似乎只是致电onCancelled()
,然后AsyncTask
在<{1}}完成后没有呼叫onPostExecute()
。也许你的第一个任务仍然拥有下一个任务所需的一些网络资源?
答案 1 :(得分:1)
尝试拨打
httpclient.getConnectionManager().shutdown();