从AlarmManager直接唤醒服务

ale*_*ett 8 android commonsware

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

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

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

Com*_*are 14

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

因为Android不能保证设备保持清醒足够长时间getService() PendingIntent才能被调用.保证适用于getBroadcast() PendingIntent- Android确保设备WakeLockonReceive()通话期间保持唤醒(通过a ).

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