我如何确保服务在上午9点开始,每天晚上9点停止?

时间:2010-06-25 17:47:19

标签: android service repeater

我有一项服务,每天都会监控位置变化。到目前为止我所知道的start a service at boot,我必须遵循链接的教程。这样我可以在启动时启动服务,但为了节省电池,我只需要在上午9点到晚上9点之间使用它。

问题非常简单,我将重复:

如何确保服务在上午9点开始,每天晚上9点停止?

2 个答案:

答案 0 :(得分:2)

使用AlarmManager设置两个警报,每个警报都会PendingIntent,在您的服务上调用startService(),但使用不同的操作字符串('start','stop')。当onStart()您的服务检测到“停止”操作Intent时,它会安排有序关机(例如stopSelf())。

如果用户在Android 2.1或更早版本中为您应用任务管理器,这将失败,因为他们倾向于使用的技术将消除您的警报(除了终止服务)。在这种情况下,用户可能会因为您的服务未投放而投票,因此您应该尝试满足用户的意愿。

答案 1 :(得分:0)

CommonsWare是对的。这是最好的方法。 您正在编写应用程序,最好不要更改应用程序之外的任何内容。如果要添加系统服务(在启动启动服务上),则需要修改BSP并将服务添加到systemserver.java。不推荐.CommonsWare的建议可以做这项工作。 正如您所说的活动,您可以在收到启动广播时启动活动。然后做你想要的......