我有一项服务,每天都会监控位置变化。到目前为止我所知道的start a service at boot,我必须遵循链接的教程。这样我可以在启动时启动服务,但为了节省电池,我只需要在上午9点到晚上9点之间使用它。
问题非常简单,我将重复:
如何确保服务在上午9点开始,每天晚上9点停止?
答案 0 :(得分:2)
使用AlarmManager
设置两个警报,每个警报都会PendingIntent
,在您的服务上调用startService()
,但使用不同的操作字符串('start','stop')。当onStart()
您的服务检测到“停止”操作Intent
时,它会安排有序关机(例如stopSelf()
)。
如果用户在Android 2.1或更早版本中为您应用任务管理器,这将失败,因为他们倾向于使用的技术将消除您的警报(除了终止服务)。在这种情况下,用户可能会因为您的服务未投放而投票,因此您应该尝试满足用户的意愿。
答案 1 :(得分:0)
CommonsWare是对的。这是最好的方法。 您正在编写应用程序,最好不要更改应用程序之外的任何内容。如果要添加系统服务(在启动启动服务上),则需要修改BSP并将服务添加到systemserver.java。不推荐.CommonsWare的建议可以做这项工作。 正如您所说的活动,您可以在收到启动广播时启动活动。然后做你想要的......