Отвечать на запросы на уничтожение диспетчерами задач

#android #service #task #persistent

#Android #Обслуживание #задача #постоянный

Вопрос:

Моя ситуация:
я создал службу Android, которая запускается при запуске приложения. Служба состоит из простого потока, который ожидает 5 секунд, записывает сообщение журнала и снова ожидает.

После закрытия приложения (с помощью кнопки «Назад») Android решает перезапустить мою службу, потому что я возвращаю START_STICKY в onStartCommand. При отладке приложения я действительно могу использовать DDMS для завершения процесса. Android снова решает перезапустить службу. Это ожидается в соответствии с руководством.

Я также установил диспетчер задач и использовал его для «уничтожения» экземпляра. Забавно то, что теперь моя служба больше не перезапускается.

Самое интересное вот в чем: в любом случае код уничтожения моих классов не вызывается. В моих ожидающих потоках не возникает исключение InterruptedException. Похоже, у моего приложения нет возможности узнать, что оно уничтожается.

Мой вопрос:
Как я могу обойти это и отвечать на запросы на уничтожение? Я уже заметил, что в DVM отсутствует sun.разное.Signal и sun.разное.SignalHandler для правильной обработки сигналов (если это вообще используется task killers).

Мне вроде как нужно знать, уничтожается ли мое приложение, чтобы я мог правильно закрыть дескрипторы файлов, подключения к базе данных и тому подобное.

Большое спасибо за любую помощь.

Ответ №1:

Как я могу обойти это и отвечать на запросы на уничтожение?

Вы этого не делаете. OTOH, это поведение убийцы задач должно было быть устранено в Android 2.2, так что в конечном итоге это не будет проблемой.

Комментарии:

1. После долгого тестирования я понял, что это действительно так. Вы этого не делаете. Точка.