Android: служба ведет себя иначе, когда не подключен к ПК - PullRequest
0 голосов
/ 08 ноября 2010

Я полагаю, что это из-за какой-то опции энергосбережения или чего-то еще, но я не могу отладить его, потому что он выходит из строя только тогда, когда он работает от батареи

У меня есть служба, которая проверяет веб-страницу каждые 60 секунд.сервис для этого, и я делаю это Thread.thisThread.sleep (60000);перед проверкой

я что-то не так делаю?может ли функция сна вызвать остановку сервера под Android?

1 Ответ

5 голосов
/ 08 ноября 2010

У меня есть служба, которая проверяет веб-страницу каждые 60 секунд. Для этого я использую asyncTask в службе и делаю ее Thread.thisThread.sleep (60000); перед проверкой

Пожалуйста, не делайте этого.

Во-первых, сделайте период настраиваемым, включая опцию «не делай этого, никогда». Пользователям действительно не нравится, когда разработчики пишут приложения, основной целью которых является израсходовать тонну батареи. Бодрствование устройства и опрос веб-сервера каждую минуту потребляют массу времени автономной работы. Именно такое поведение заставляет пользователей запускать каждого убийцу задач, которого они могут найти.

Во-вторых, особенно для периодов больше минуты или около того, пожалуйста, используйте AlarmManager и [WakefulIntentService] [1]. Запланируйте AlarmManager для вызова вашего приложения в выбранный пользователем период (в идеале через setInexactRepeating()). Попросите WakefulIntentService опросить вашу веб-страницу. Если вы будете следовать задокументированному рецепту WakefulIntentService, устройство будет бодрствовать достаточно долго, чтобы вы могли получить данные, а затем снова заснет. Ваш сервис не останется в памяти все время. Вы получаете свою функциональность, а пользователь получает лучшую производительность устройства.

...