android - 取消的 AsyncTask 挂起新的 HttpRequests

标签 android httprequest android-asynctask

我在处理异步任务和 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/

相关文章:

java - 检查 sqlite 中的文本

java - ORMLite android类字段是其他类的id

android - 从 AppWidgetProvider 中的 strings.xml 中获取字符串

api - Rabbitmq HTTP API 请求未授权

spring-boot - Zuul代理向请求url添加参数

Android:如果 AsyncTask 在单独的类中,如何从 AsyncTask 更新 UI?

android - 使用 AsyncTask 实现 API 并将结果更新到 UI

android - Android中的多列自定义ListView

android - Google Play 与 Android 游戏引擎

python - ValueError at/url/ View frontend.views.url 没有返回 HttpResponse 对象。它返回 None 相反