В идеале, что вы хотите сделать в подобных ситуациях - это обернуть ваши HTTP-запросы в цикл, который можно отменить. Используя этот вопрос в качестве примера (полная реализация там):
@Override
protected Void doInBackground(Void... params) {
while (running) {
// loop your HTTP requests here
}
return null;
}
Когда вы запускаете метод onCancelled()
(вызывая cancel
), ваш метод doInBackground
завершает , как только по завершении текущего HTTP-запроса (и не раньше).
Вероятно, это будет самое изящное решение, которое вы собираетесь использовать, используя AsyncTask
. Кроме того, вам может понадобиться поймать прерванное исключение где-нибудь в вашем классе AsyncTask
, но этого должно быть достаточно, чтобы вы начали.