为什么将WakeLock机制放在BroadcastReceiver而不是在服务中?

时间:2016-08-02 13:40:36

标签: android service broadcastreceiver wakelock

我正在查看Google Google团队的示例代码WakefulBroadcastReceiver

我的问题是,是否有一个特定的理由在BroadcastReceiver中获取/释放此机制,而不是将其置于服务本身。如果是的话是什么 ?

1 个答案:

答案 0 :(得分:0)

它对于警报(请参阅AlarmManager)或其他类型的PendingIntent用例非常有用。当警报发送到BroadcastReceiver时,警报管理器机制确保系统唤醒足够长的时间以传送广播Intent(例如,运行onReceive()方法)仅限BroadcastReceiver

如果在这种情况下使用PendingIntent作为ServiceService将从API角度“启动”,但不一定会运行,因为系统可以回去睡觉吧。使用WakefulBroadcastReceiver,您可以使用警报触发它,执行唤醒锁定并启动Service。然后Service将有机会运行并最终需要释放唤醒锁定,以便系统可以重新进入睡眠状态。