在https://github.com/commonsguy/cwac-wakeful演示中,调用 OnAlarmReceiver(一个 BroadcastReceiver)的 onReceive() 方法来响应警报。onReceive() 方法启动服务。使用了两种 Intent,一种由 BroadcastReceiver 接收,另一种由 Service 接收。这似乎更复杂,为什么不让服务从 AlamManager 接收 Intent?
我知道电话在 onReceive() 执行时保证不会休眠,即它用唤醒锁包裹。我不确定 Service 类是否提供任何类似的保证。
有什么方法可以直接从警报启动服务,同时仍然保证手机将从睡眠中唤醒并且在获得唤醒锁之前不会进入睡眠状态?