У меня есть сервис, который будет ежедневно наблюдать изменения местоположения. Что я знаю до сих пор, что для запуска сервиса при начальной загрузке я должен следовать связанному учебному руководству. Таким образом, я мог запустить сервис при начальной загрузке, но сохранить батарею мне нужен он только между 9:00 - 21:00.
Вопрос довольно прост, таким образом, я повторюсь:
Как я могу удостовериться, что сервис запускается в 9:00 и остановленное 21:00 каждый день?
Используйте AlarmManager
, чтобы установить два сигнала тревоги, каждый с PendingIntent
, который вызовет startService()
на вашем сервисе, но с разными строками действия ('start', 'stop'). Когда onStart()
вашей службы обнаружит действие 'stop' Intent
, она организует упорядоченное завершение работы (например, stopSelf()
).
Это не сработает, если пользователь применит к вам диспетчер задач в Android 2.1 или более ранней версии, поскольку техника, которую они обычно используют, уничтожит ваши оповещения (в дополнение к уничтожению службы). В этом случае пользователь, предположительно, голосует за то, чтобы ваша служба не запускалась, поэтому вам следует попытаться учесть его пожелания.
CommonsWare прав. Это лучший способ. Вы пишете приложение и лучше ничего не менять вне приложения. Если вы хотите добавить системную службу (при запуске службы при загрузке), вам необходимо изменить BSP и добавить свою службу в systemserver.java. Это не рекомендуется, потому что с этой задачей может справиться предложение MonsWare. Как вы сказали об активности, вы можете запустить ее, когда получите загрузочную трансляцию. Тогда делайте, что хотите .....