Используемый вами объект RestClient
не предоставляет ни одного interrupt()
метода DefaultHttpClient
(который является вспомогательным объектом, выполняющим большую часть работы).Не проблема - DefaultHttpClient, похоже, не имеет никаких функций прерывания или прерывания, которые можно было бы открыть в первую очередь.
Итак, слева от вас есть операция блокировки на client.Execute()
.
Вашна полпути к решению - поместить блокировку в поток.Где ваше падение - ваша архитектура - вы используете настройку Thread / Listener, которая не дает вам много места для маневра.
Попробуйте переключить свой анонимный Thread
на AsyncTask
.Это не решит проблему блокирования client.Execute()
, но позволит вам выбросить слушателя (заменив его на onProgressUpdate()
или onPostExecute()
).
То, что это сделает, позволит вам позвонить task.cancel()
, сигнализируя Задаче, что она больше не нужна.Это позволит вам переназначить новый AsyncTask, осиротев от отмененной задачи, потерянный поток затем быстро завершит свою работу и тихо умрет, в то время как остальная часть вашего приложения выполнит то, что ему нужно.
((На несвязанном примечании «Execute ()» является методом и не должен быть написан заглавными буквами))