Как сервис Android реагирует на необработанное исключение? - PullRequest
2 голосов
/ 06 января 2012

У меня есть служба, которая обновляет внутреннюю базу данных местоположением, которое затем отправляется в веб-базу данных. Примерно через час или 5 часов приложение перестает давать принудительное закрытие и исчезает из диспетчера задач. как служба реагирует на необработанное исключение, так как это может быть причиной остановки моей программы?

1 Ответ

2 голосов
/ 06 января 2012

Служба исчезнет, ​​так что это может объяснить ваши наблюдения.Если вы сможете добраться до logcat, вы увидите трассировку стека.Или попробуйте перехватить исключения и записать некоторый журнал в файл в блоке catch.

Однако, если служба не связана с активностью, Android может убить службу, если ей нужны ресурсы.

Ниже приведен отрывок http://developer.android.com/guide/topics/fundamentals/services.html

"Система Android принудительно останавливает службу только при нехватке памяти и должна восстанавливать системные ресурсы для действия, ориентированного на пользователя. Еслислужба привязана к деятельности, которая ориентирована на пользователя, тогда вероятность ее уничтожения будет ниже, а если заявить, что служба запущена на переднем плане (обсуждается позже), она почти никогда не будет уничтожена. В противном случае, если служба былазапущен и работает долго, затем система с течением времени опустит свою позицию в списке фоновых задач, и служба станет очень восприимчивой к уничтожению - если ваша служба запущена, то вы должны спроектировать ее для изящной обработки перезапусков системойЕсли система убивает ваш сервис, она перезапускает его, как только ресурсы становятсяome снова доступен (хотя это также зависит от значения, которое вы возвращаете из onStartCommand (), как будет обсуждаться позже). "

...