#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. После долгого тестирования я понял, что это действительно так. Вы этого не делаете. Точка.