Вы можете попробовать IntentService.Из ссылки:
IntentService - это базовый класс для служб, которые обрабатывают асинхронные запросы (выраженные в виде содержимого) по требованию.Клиенты отправляют запросы через вызовы startService (Intent);служба запускается по мере необходимости, обрабатывает каждое намерение поочередно, используя рабочий поток, и останавливается, когда заканчивается его работа.
Я запустил службу с приемника вещания следующим образом:
// Now let the service module do the rest
Intent serviceIntent = new Intent(context, Service.class);
serviceIntent.putExtra(GC.EXTRA_SERVICE_DATA, serviceData);
ComponentName compName = context.startService(serviceIntent)
Работало как рекламируется.Запросы сериализуются нормально.Служба началась, когда был получен запрос.Служба остановлена после обработки последнего запроса.Запросы были обработаны FIFO.
Я создал intentservice, щелкнув правой кнопкой мыши на имени исходного пакета и выбрав New / Class.Я использовал intentservice в качестве суперкласса.У конструктора есть аргумент «имя».Я изменил его на:
public XxxService() {super("XxxService");}
Весь код службы перешел в функцию onHandleIntent.Мне не приходилось использовать другие функции @Override.
Надеюсь, это то, что вы хотели ...
Примечания: переменная context является переданным параметром в onReceive.Я изменил имена в коде с XxxxService на «Сервис» или «Сервис».Наконец, я создаю класс во всех моих проектах под названием GC.Это контейнерный класс для глобальных констант.GC.EXTRA_SERVICE_DATA - это глобальная строка, определяющая дополнительный ключ.