【问题标题】:Stop HTTP requests in async tasks on changing activity在更改活动时停止异步任务中的 HTTP 请求
【发布时间】:2012-01-05 18:36:15
【问题描述】:

我正在一个活动中下载多个图像以填充列表视图,所有这些都在单独的异步任务中。在此活动中,用户可以按下按钮转到不需要图像的另一个页面。

我遇到的问题是,即使在进行下一个活动时,异步任务仍在运行,并且不会为需要在下一个活动中发出的请求释放 httpclient。

我尝试对所有正在运行的任务使用 asynctask.cancel,但这会引发 interruptedIOException。

是否有任何其他优雅的方式来停止为释放客户端而发出的请求?

【问题讨论】:

标签: android httpclient android-asynctask


【解决方案1】:

理想情况下,您希望在这种情况下将您的 HTTP 请求包装在一个可以取消的循环中。以this question 为例(完整实现):

@Override
protected Void doInBackground(Void... params) {
  while (running) {
    // loop your HTTP requests here
  }
  return null;
}

当您触发 onCancelled() 方法(通过调用 cancel)时,您的 doInBackground 方法将在当前 HTTP 请求完成后尽快终止(并且强> 之前)。

这可能是您使用AsyncTask 获得的最优雅的解决方案。此外,您可能必须在 AsyncTask 类中的某处捕获中断的异常,但这应该足以让您继续前进。

【讨论】:

  • 有什么方法可以终止当前的 hTTP 请求..?
猜你喜欢
  • 2012-11-22
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 2020-10-10
  • 2012-10-31
  • 1970-01-01
  • 2012-08-06
相关资源
最近更新 更多