我在处理异步任务和 http 请求时遇到了问题。
用户可以按下两个不同的按钮。这两个按钮都从 Web 服务器下载信息。我希望请求可以取消。在每次调用之前都会显示一个进度对话框。
http 请求在异步任务中执行,我在进度对话框上有一个 OnDismiss 监听器,如果按下后退,它会取消异步任务。
它的工作原理是 50/50。
如果我执行 http 请求,取消异步任务,然后执行新请求,它可能会工作,但也可能导致 http 请求无限挂起。
这一行是它挂起的地方:
response = httpclient.execute(urlConnection, context);
有没有其他方法可以取消调用,或者我可以做些什么来避免挂起?
最佳答案
我编写了一个 AsyncTask
来通过 http 执行一些下载,我发现在任务上调用 cancel()
实际上并没有停止任务的执行。 “已取消”任务将继续执行其后台操作。调用 cancel()
似乎调用了 onCancelled()
,然后 AsyncTask
没有调用 onPostExecute()
当它完成时。也许您的第一个任务仍然拥有下一个任务所需的一些网络资源?
关于android - 取消的 AsyncTask 挂起新的 HttpRequests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880363/