Правильный способ прервать запрос с помощью AndroidHttpClient API - это вызвать abort()
для объекта запроса, который вы передаете в httpClient.execute()
. Это приведет к тому, что вызов execute()
вызовет IOException
, а запрос isAborted()
запроса начнет возвращать значение true. Вызов abort()
определен в интерфейсе AbortableHttpRequest
, который в основном реализуют все интересные классы запросов (HttpGet
, HttpPost
и т. Д.).
AsyncTask.cancel(true)
не отменяет запрос, потому что AndroidHttpClient.execute()
не блокирует таким образом, что Thread.interrupt()
сделает все, чтобы остановить (поток не ожидает присоединения к другому потоку, ожидает мьютекса или спать). Thread.interrupt()
НЕ прекращает блокировать ввод / вывод.
В моем тестировании вызов httpClient.close()
или httpClient.getConnectionManager().shutdown()
не сделал ничего, чтобы остановить выполняемый в данный момент запрос, но я не стал глубоко исследовать, чтобы выяснить, почему.