我有一个用于整个应用程序的线程安全 HttpClient,并且我有一个服务和一个活动,它们在不同的线程中非常频繁地进行各种 REST API 调用。有时我需要取消已启动的 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);
我也尝试关闭连接管理器。正如这里所建议的那样:https ://stackoverflow.com/a/7311393/1032286 但是我只有一个客户和经理,我不想在每次进行 REST 调用时都创建它们。我该怎么办?如果有办法取消所有正在运行的请求,我会很高兴,但如果有办法取消单独的请求,那就太好了。