几个概念...
睡眠模式
WAKE_LOCK
如果没有用户交互或请求,Android 内核将进入睡眠模式(默认情况下) 。这样做是为了最大限度地减少电池利用率,这意味着任何代码都将停止运行。
报警管理器
这是一个可以设置 timmer 事件以唤醒内核并开始运行代码的 API。如果应用程序需要执行一些长时间的活动,它应该请求唤醒舔,否则内核将在短时间内再次进入睡眠模式。
您的应用程序发生了什么
一旦设备进入睡眠状态,您的服务就会停止。当设备被用户或手机中其他应用程序发出的警报管理器请求唤醒时,您的服务将再次启动。当手机再次进入睡眠状态时,您的服务也会进入睡眠状态。
你应该做什么
首先,您应该仔细考虑是否真的需要在手机一段时间未使用时(何时应该进入睡眠模式)进行更新。也许没有人在使用它,并且让服务持续运行,会不断消耗电池。
如果您不需要该服务持续运行,您有 2 个选项:
使用警报管理器
以固定的间隔时间唤醒设备(使用尽可能低的频率)并更新您的服务工作。如果这需要一些时间,请请求 aWAKE_LOCK
并在完成后释放它。
最后使用
如果您可以等待用户唤醒手机以更新您的服务工作,那就更好了。只需删除除最后一个之外的所有更新请求。
最后
如果您确实需要服务持续运行,请WAKE_LOCK
在服务启动时请求。只是不要忘记您将在电池现场支付。
Note:
不管您使用 a还是其他任何东西Timer
,Handler
上述内容都将始终适用。
问候。