Приоритетное планирование перезапуска аварийного сервиса Android - PullRequest
5 голосов
/ 08 февраля 2012

При использовании START_STICKY , если мой сервис был сбит / убит диспетчером задач, он автоматически перезапустится.Я вижу, что есть список служб, которые перезапускаются, но в другом порядке.Я хочу расставить приоритеты этого перезапуска службы, чтобы он запускался раньше, поместив его в начало очереди.

Обычно перезапуск службы занимает от 15 до 45 секунд.Есть ли способ расставить приоритеты или запустить эту услугу раньше, чем другие.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Ваш сервис работает долго? Если это так, попытайтесь избавиться от него и запускайте его только тогда, когда это необходимо. Службы Android не предназначены для работы в качестве демона, они предназначены для работы в качестве недолговечных рабочих в фоновом режиме, когда не требуется никакого взаимодействия с пользователем и интерфейса.

Большинство служб "Я просто сижу" могут слушать намерения вещания и таким образом быть хорошим гражданином.

Другое дело: если ваша служба уже работает недолго и активен убийца задач, это легко: это проблема пользователей, а не ваша ошибка. Система не нуждается в убийцах задач, и вы не должны заботиться о них. Пользователь должен знать, что их использование не полезно.

0 голосов
/ 12 февраля 2012

Полагаю, это решение несколько грязное, но вы можете использовать новый Сервис, который начинается с START_STICKY и установить для всех других сервисов значение START_NOT_STICKY.

Затем вы можете использовать новый сервис дляЗапустите все другие службы (хотя это не обязательно).На самом деле это простая реализация, поскольку вы можете передать все намерения службе, которая должна быть запущена.

Затем вы можете добавить широковещательную рассылку для всех служб OnDestroy(), чтобы сообщить новой службе, что один изстарый был убит системой.Вы также можете передать старое начальное намерение через OnDestroy(), чтобы он был перезапущен.

В случае, если ваша новая служба будет убита, вы можете проверить после перезапуска, была ли убита какая-либо из других служб, а также расставить приоритетыперезапуск.

...