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.
但是其他广播呢?或者这只取决于广播的发送者?
答案 0 :(得分:1)
Android可以在BroadcastRceiver中处理广播时进入深度睡眠状态吗?
一般来说,是的。一个值得注意的例外是BroadcastReceiver
是由AlarmManager
和getBroadcast()
PendingIntent
触发的。
是否需要在BroadcastReceiver onReceive方法中尽早创建部分唤醒锁,或者可以在onReceive方法中的任何位置创建(并传递给服务)?
好吧,你不能很容易地将WakeLock
传递给服务,这就是我写WakefulIntentService
的原因。
但其他广播怎么样?或者这只取决于广播的发送者?
除了前面提到的Intent
情景之外,我不知道任何其他广播WakeLock
自动拥有AlarmManager
。一个可能将是SMS_RECEIVED
,因为传入的短信也可以唤醒设备。