在https://github.com/commonsguy/cwac-wakeful演示中,为响应警报而调用OnAlarmReceiver(BroadcastReceiver)onReceive()方法。 onReceive()方法启动服务。使用了两个Intent,一个由BroadcastReceiver接收,另一个由Service接收。这看起来更复杂,为什么不让服务从AlamManager接收Intent?
据我所知,当onReceive()正在执行时,保证Phone不会休眠,即它包含唤醒锁定。我不确定服务类是否提供任何类似的保证。
是否可以直接从闹钟启动服务,同时仍然保证手机将从睡眠中唤醒,并且在获得唤醒锁之前不会睡眠?
答案 0 :(得分:14)
这看起来更复杂,为什么不让服务从AlamManager接收Intent?
因为Android无法保证设备能够保持清醒足够长的时间来调用getService()
PendingIntent
。 getBroadcast()
PendingIntent
的保证仅为 - Android确保设备在{{1}的持续时间内保持清醒状态(通过WakeLock
)调用。
相信我,我希望我们可以跳过它。