1

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.但是其他广播呢?或者这仅取决于广播的发送者?

4

1 回答 1

1

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

一般来说,是的。一个值得注意的例外是如果BroadcastReceiverAlarmManager和触发getBroadcast() PendingIntent

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

好吧,你不能WakeLock很容易地将 a 传递给服务,这就是我写WakefulIntentService.

但是其他广播呢?或者这仅取决于广播的发送者?

除了上述情况外,我不知道有任何其他Intent自动保存的广播。一个可能是,因为传入的 SMS 也可以唤醒设备。WakeLockAlarmManagerSMS_RECEIVED

于 2013-05-04T21:49:15.510 回答