Как я могу гарантировать, что служба запускается в 9 утра и останавливается в 9 вечера каждый день? - PullRequest
1 голос
/ 25 июня 2010

У меня есть служба, которая ежедневно отслеживает изменения местоположения.Насколько я знаю, чтобы запустить службу при загрузке , я должен следовать связанному учебнику.Таким образом, я могу запустить службу при загрузке, но для экономии батареи она нужна только с 9:00 до 21:00.служба запускается в 9 утра и останавливается каждый день в 9 вечера?

Ответы [ 2 ]

2 голосов
/ 25 июня 2010

Используйте AlarmManager для установки двух сигналов тревоги, каждый с PendingIntent, который будет вызывать startService() в вашей службе, но с различными строками действий ('start', 'stop').Когда onStart() вашей службы обнаруживает действие «стоп» Intent, она организует упорядоченное отключение (например, stopSelf()).

Это не будет выполнено, если пользователь применяет к вам диспетчер задачAndroid 2.1 или более ранняя версия, поскольку техника, которую они обычно используют, уничтожит ваши тревоги (в дополнение к уничтожению службы).В этом случае пользователь, по-видимому, голосует за то, чтобы ваш сервис не работал, поэтому вам следует попытаться учесть его пожелания.

0 голосов
/ 28 июня 2010

CommonsWare прав.Это лучший способ.Вы пишете заявку, и вам лучше ничего не менять в приложении.Если вы хотите добавить системный сервис (при загрузке запущен сервис), вам нужно изменить BSP и добавить свой сервис в systemserver.java.Это не рекомендуется. Предложение CommonWare может сделать эту работу.Как вы сказали об активности, вы можете запустить activicy, когда получите загрузочную трансляцию.Тогда делай что хочешь .....

...