Могу ли я определить, когда мой сервис был убит "Advanced Task Killer" - PullRequest
7 голосов
/ 03 мая 2011

Мое приложение запускает службу геолокации, которую пользователь может активировать или деактивировать с помощью кнопки toggleButton. Чтобы проверить состояние службы, я пишу логическое значение в общих настройках. Я слушаю начало сервиса и его конец благодаря onDestroy () моего сервиса.

Моя проблема в том, что: когда пользователь убивает службу с помощью «продвинутого убийцы задач», я не могу знать, что служба убита, onDestroy не вызывается!

Как я могу справиться с этим?

Спасибо за вашу помощь.

Флоран

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

Когда процесс убит (используя ATK или собственную кнопку принудительной остановки Android или функцию здесь ), он немедленно удаляется из памяти (если ядро ​​это позволяет). Это означает, что нет никакого шанса для запуска какого-либо дополнительного кода, а это означает, что нет способа реально справиться с «принудительным уничтожением», отправленным в ваше приложение.

Если вы хотите справиться с этим, у вас есть 2 варианта (которые я могу придумать):

  1. Опубликуйте заявление об отказе от ответственности, чтобы пользователи добавили ваше приложение в список "игнорировать" ATK.
  2. Найдите способ сохранить функциональность, не полагаясь на метод onDestroy ().

EDIT:

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

0 голосов
/ 02 июля 2012

onDestroy()

Если вы хотите перезапустить службу, вы можете перезапустить ее в onDestroy().

...