我正在查看Google Google团队的示例代码WakefulBroadcastReceiver
我的问题是,是否有一个特定的理由在BroadcastReceiver中获取/释放此机制,而不是将其置于服务本身。如果是的话是什么 ?
答案 0 :(得分:0)
它对于警报(请参阅AlarmManager
)或其他类型的PendingIntent
用例非常有用。当警报发送到BroadcastReceiver
时,警报管理器机制确保系统唤醒足够长的时间以传送广播Intent
(例如,运行onReceive()
方法)仅限BroadcastReceiver
。
如果在这种情况下使用PendingIntent
作为Service
,Service
将从API角度“启动”,但不一定会运行,因为系统可以回去睡觉吧。使用WakefulBroadcastReceiver
,您可以使用警报触发它,执行唤醒锁定并启动Service
。然后Service
将有机会运行并最终需要释放唤醒锁定,以便系统可以重新进入睡眠状态。