Android BroadcastReceiver和深度睡眠

时间:2013-05-04 21:27:20

标签: android android-broadcast android-wake-lock

Android可以在BroadcastRceiver中处理广播时进入深度睡眠状态吗? 是否需要在BroadcastReceiver onReceive方法中尽早创建部分唤醒锁,或者可以在onReceive方法中的任何位置创建(并传递给服务)?

AlarmManager文档说明The Alarm Manager holds a CPU wake lock as long as the alarm receiver's onReceive() method is executing. This guarantees that the phone will not sleep until you have finished handling the broadcast.但是其他广播呢?或者这只取决于广播的发送者?

1 个答案:

答案 0 :(得分:1)

  

Android可以在BroadcastRceiver中处理广播时进入深度睡眠状态吗?

一般来说,是的。一个值得注意的例外是BroadcastReceiver是由AlarmManagergetBroadcast() PendingIntent触发的。

  

是否需要在BroadcastReceiver onReceive方法中尽早创建部分唤醒锁,或者可以在onReceive方法中的任何位置创建(并传递给服务)?

好吧,你不能很容易地将WakeLock传递给服务,这就是我写WakefulIntentService的原因。

  

但其他广播怎么样?或者这只取决于广播的发送者?

除了前面提到的Intent情景之外,我不知道任何其他广播WakeLock自动拥有AlarmManager。一个可能将是SMS_RECEIVED,因为传入的短信也可以唤醒设备。