Java 如何在Android中取消HttpRequest

Java 如何在Android中取消HttpRequest,java,android,httpclient,Java,Android,Httpclient,对于整个应用程序,我有一个线程安全的HttpClient,我有一个服务和一个活动,它们在不同的线程中频繁地进行各种restapi调用。 有时我需要取消一个已启动的HttpRequest,因为我已经需要用更新的数据启动另一个HttpRequest。 我不想让用户先等待第一个请求完成,然后再等待第二个请求,这时用户可能会再次更新数据,我需要调用第三个请求。 所以我想做的是用一个旧数据取消请求,然后开始一个新的请求。我尝试取消AsyncTask,但由于某些原因,它没有取消已启动的请求。这是我的密码:

对于整个应用程序,我有一个线程安全的HttpClient,我有一个服务和一个活动,它们在不同的线程中频繁地进行各种restapi调用。 有时我需要取消一个已启动的HttpRequest,因为我已经需要用更新的数据启动另一个HttpRequest。 我不想让用户先等待第一个请求完成,然后再等待第二个请求,这时用户可能会再次更新数据,我需要调用第三个请求。 所以我想做的是用一个旧数据取消请求,然后开始一个新的请求。我尝试取消AsyncTask,但由于某些原因,它没有取消已启动的请求。这是我的密码:

if (getAlbumImage != null && getAlbumImage.getStatus() == AsyncTask.Status.RUNNING) {
    Log.d(VibesApplication.VIBES, "cancelling image loader");
    getAlbumImage.cancel(true);
}
getAlbumImage = new GetAndSetAlbumImage();
getAlbumImage.execute(performer, name);
我还尝试关闭连接管理器。正如这里所建议的: 但我只有一个客户和经理,我不想每次打REST电话时都创建他们。
我该怎么办?如果有办法取消所有正在运行的请求,我会很高兴,但如果有办法取消单独的请求,那就太好了。

取消异步任务只会将任务的IsCanceled标志设置为true。如果要停止后台任务,必须在runInBackground函数的基本不同里程碑中显式检查IsCanceled标志。我记得以前遇到过这个问题,但找不到明确的方法来停止HTTPRequest。我实际上忽略了第一个异步任务,并启动了一个新任务。由于第一个任务被取消,因此每当它完成运行时,我只需通过检查IsCanceled标志来丢弃信息。

尝试
yourHttpRequest.abort()

HttpGet
HttpPost
都实现了
AbortableHttpRequest
,并且它具有
abort()
方法


放弃更改是可以的,但请求需要时间、电池、3g流量等建议的重复。