【发布时间】:2013-01-15 03:13:12
【问题描述】:
我正在使用静态 Web 服务类来调用 HTTP GET 请求,并希望能够在用户按下后退按钮时取消请求/AsyncTask。
我在 doInBackground 中定期检查 isCancelled(),它适用于所有其他操作,但如果 HTTP 请求在用户回击时发生,则在收到结果或超时之前不会取消任务。
由于对 WebServices.getDeviceId() 的静态调用,我没有 HTTP 客户端的句柄,所以我不能使用 httpclient.getConnectionManager().shutdown();停止连接。有人对我如何解决这个问题有任何想法吗?
@Override
protected Void doInBackground(Void... params) {
if((mInstance.getDeviceId() == null) && !isCancelled()) {
String deviceId = WebServices.getDeviceId();
}
return null;
}
【问题讨论】:
-
你写了
I check isCancelled() periodically,但我认为你错了:你只检查了一次isCancelled(),在doInBackground()的开头。 -
好吧,现在这是 doInBackground 中唯一要做的事情,所以我只检查一次,因为没有循环或任何东西,而且我无法在实际的 HTTP 内容中检查它
-
是的,你是对的,我只是想检查一下你所说的“定期”是什么意思,因为没有循环。
标签: android http android-asynctask