У меня есть служба, которая выполняет некоторую тяжелую работу над фоновым потоком. Он в основном загружает большой zip (> 5 МБ), сохраняет его, распаковывает, анализирует XML и сохраняет информацию в базе данных SQLite.Приостановить выполнение задачи на фоновом потоке для выполнения задачи с более высоким приоритетом
В то время как служба выполняет свою работу, мне иногда приходится выполнять быстрое фоновое задание (например, вход в систему пользователя). Однако, поскольку служба очень занята (обычно извлечение zip-файла), моя короткая задача занимает некоторое время (и пользователю приходится ждать).
Есть ли способ, которым я мог бы полностью приостановить мое обслуживание (и это фоновая AsyncTask), чтобы я мог запускать свою новую задачу с более высоким приоритетом?
Спасибо!
Вы используете простую нить или AsyncTask в своей службе? Обратите внимание, что на большинстве версий ОС Android _all_ AsyncTasks выполняется в одном потоке, поэтому, если вы используете AsyncTask в своей службе для длительной работы, он заблокирует все будущие AsyncTasks. Что может быть или не быть источником вашей проблемы (требуется более подробная информация). Если это не так, другое предложение заключается в том, чтобы снизить поток вашей службы, а побочным преимуществом является то, что он может даже улучшить отзывчивость пользовательского интерфейса. – Kai
Ошибка. Приложение предназначено для загрузки данных до входа пользователя. – danny117
@Kai Вау, я этого не знал. Я решил, что каждая новая AsyncTask создаст новый поток. Итак, как я могу снизить поток в моем сервисе? –