Я использую AsyncTask
для инициализации AndroidHttpClient
и выполнения запроса POST в doInBackground ()
. Я бы хотел, чтобы пользователь мог отменить запрос, нажав кнопку "Назад". AsyncTask
имеет метод cancel ()
, который изменяет только логическое возвращаемое значение isCancelled ()
, а затем ожидает, пока doInBackground ()
будет завершить перед вызовом onCancelled ()
. Это означает, что AsyncTask
оставляет на усмотрение метода doInBackground ()
постоянную проверку того, была ли задача отменена (с помощью isCancelled ()
). Если он был отменен, doInBackground ()
должен вернуться раньше времени. У меня проблема в том, что на 99% выполнение рабочего потока в doInBackground ()
останавливается на:
HttpResponse response = httpClient.execute(request[0]);
, поскольку этот синхронный вызов функции инкапсулирует сетевые аспекты запроса. Как я могу отменить запрос на полпути?
Я подумываю о попытке изменить время ожидания во время запроса, но это кажется опасным для потока.
Я также подумываю отменить метод AsyncTask
cancel ()
, который может работать лучше.
Есть предложения?