8

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

我知道电话在 onReceive() 执行时保证不会休眠,即它用唤醒锁包裹。我不确定 Service 类是否提供任何类似的保证。

有什么方法可以直接从警报启动服务,同时仍然保证手机将从睡眠中唤醒并且在获得唤醒锁之前不会进入睡眠状态?

4

1 回答 1

14

这似乎更复杂,为什么不让服务从 AlamManager 接收 Intent?

因为 Android 不能保证设备将保持唤醒足够长的时间getService() PendingIntent来调用 a。该保证适用于getBroadcast() PendingIntent- Android 确保设备WakeLock在您onReceive()通话期间(通过 a )保持唤醒状态。

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

于 2011-09-16T12:15:13.133 回答