アプリケーション全体に 1 つのスレッド セーフな HttpClient があり、別のスレッドでさまざまな REST API 呼び出しを非常に頻繁に行うサービスとアクティビティがあります。また、更新されたデータで別の HttpRequest を開始する必要があるため、開始した HttpRequest をキャンセルする必要がある場合もあります。最初のリクエストが完了するのをユーザーに待たせてから、2 番目のリクエストを待たせたくありません。おそらくこの時点で、ユーザーはデータを再度更新し、3 番目のリクエストを呼び出す必要があります。だから私がやりたいのは、古いデータでリクエストをキャンセルして、新しいデータを開始することです。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 しかし、クライアントとマネージャーは 1 つしかないため、REST 呼び出しを行うたびにそれらを作成したくありません。私は何をすべきか?実行中のリクエストを全部キャンセルできる方法があれば嬉しいのですが、個別にキャンセルできる方法があればいいですね。