Я загружаю несколько изображений в активность, чтобы заполнить список, все в отдельных задачах async. В этом упражнении пользователь может нажать кнопку, чтобы перейти на другую страницу, для которой не требуются изображения.
Проблема, с которой я столкнулся, заключается в том, что даже при переходе к следующему действию асинхронные задачи все еще запущены, а httpclient не выпущен для запросов, которые должны быть сделаны в этом следующем действии.
Я попытался использовать asynctask.cancel для всех запущенных задач, но это вызывает interruptedIOException.
Есть ли какой-либо другой изящный способ остановить запросы, которые будут сделаны для освобождения клиента?
Остановить HTTP-запросы в задачах async при изменении активности
0
A
ответ
1
В идеале, что вы хотите сделать в таких ситуациях, это обернуть ваши HTTP-запросы в цикл, который можно отменить. Используя this вопрос в качестве примера (полное осуществление там):
@Override
protected Void doInBackground(Void... params) {
while (running) {
// loop your HTTP requests here
}
return null;
}
Когда вы вызываете метод onCancelled()
(по телефону cancel
), ваш метод doInBackground
прекращает как только в качестве текущего запроса HTTP завершена (и не ранее).
Это, скорее всего, будет самым изящным решением, которое вы собираетесь использовать с помощью AsyncTask
. Кроме того, вам, возможно, придется поймать прерванное исключение где-нибудь в вашем классе AsyncTask
, но этого должно быть достаточно, чтобы вы начали.
Смежные вопросы
- 1. Как остановить PhoneStateListener при изменении активности
- 2. Как остановить MediaPlayer при изменении активности в Android
- 3. Использование async-сокета в задачах
- 4. setBackgroundResource при изменении активности
- 5. Windows Form застрял в нескольких задачах async
- 6. Остановить наблюдение при изменении шаблона
- 7. Android BluetoothGatt становится недействительным при изменении активности
- 8. C# безопасное сохранение async при изменении данных?
- 9. Как обрабатываются async NSURLConnections при изменении viewController?
- 10. Хранение данных во фрагменте при изменении активности
- 11. Состояние управляющей активности при изменении ориентации (Android)
- 12. Android: Остановка Воспроизведение активности при изменении ориентации
- 13. Перезапуск активности при изменении режима просмотра
- 14. Радио кнопки сбросить/рандомизировать при изменении активности
- 15. Android: ошибка при изменении активности по умолчанию
- 16. Получение черного экрана при изменении активности
- 17. Запретить анимацию заголовка при изменении активности
- 18. Как изменить значение edittext при изменении активности
- 19. Запретить мигание текущей активности при изменении фрагментов?
- 20. Android MediaPlayer, SeekBar Исключение при изменении активности
- 21. Сброс настроек режима Immersive при изменении активности
- 22. предотвращает перезапуск активности при изменении ориентации
- 23. Android: как избежать задержки при изменении активности?
- 24. Храните все значения нетронутым при изменении активности
- 25. Android: Отказано Ошибки при изменении Launcher активности
- 26. сохранение состояния активности при изменении макета
- 27. Остановить операции async при закрытии окна
- 28. Состояние кнопки сохранения при изменении активности
- 29. Сохранение состояния радиогруппы при изменении активности
- 30. Скрыть форму комментариев активности при изменении вкладки
Реализовать потоки и исходное решение из следующего вопроса stackoverflow. http://stackoverflow.com/questions/680180/whe re-to-stop-destroy-threads-in-android-service -class – wurde