从AlarmManager直接唤醒服务

时间:2011-09-16 11:40:31

标签: android commonsware

https://github.com/commonsguy/cwac-wakeful演示中,为响应警报而调用OnAlarmReceiver(BroadcastReceiver)onReceive()方法。 onReceive()方法启动服务。使用了两个Intent,一个由BroadcastReceiver接收,另一个由Service接收。这看起来更复杂,为什么不让服务从AlamManager接收Intent?

据我所知,当onReceive()正在执行时,保证Phone不会休眠,即它包含唤醒锁定。我不确定服务类是否提供任何类似的保证。

是否可以直接从闹钟启动服务,同时仍然保证手机将从睡眠中唤醒,并且在获得唤醒锁之前不会睡眠?

1 个答案:

答案 0 :(得分:14)

  

这看起来更复杂,为什么不让服务从AlamManager接收Intent?

因为Android无法保证设备能够保持清醒足够长的时间来调用getService() PendingIntentgetBroadcast() PendingIntent的保证仅为 - Android确保设备在{{1}的持续时间内保持清醒状态(通过WakeLock)调用。

相信我,我希望我们可以跳过它。