Android设备可以通过两种方式进入“睡眠”模式。一种是让屏幕超时并自动关闭。在这种情况下,目前还不清楚CPU是否仍在运行应用程序(除非它们具有部分唤醒锁定)。另一种情况是当您按下电源按钮并且屏幕熄灭时。我不清楚这是否与让屏幕超时一样。Android设备如何唤醒
但我真正想知道的是真正发生的事情。例如,如果我按下电源按钮但有电话进入,设备将会唤醒并点亮,手机应用程序启动。这只是手机应用程序与部分唤醒锁一起运行还是制造商使用自定义硬件功能来识别手机铃声并将其从睡眠模式中取出?
我感兴趣的原因是因为如果它是硬件控制的,出现的问题是是否有其他硬件相关的功能是以相同的方式控制的。例如,GPS接收器可以保持活动状态,但只有在收到有效位置时才唤醒设备?
为了节省电池消耗,如果我们可以在某些硬件功能被激活时唤醒设备,那就太好了。我对WakeLock功能的印象是,它只是一个软件功能,对电源按钮的支持很少。
为了让您在BroadcastReceiver中侦听意图,CPU必须运行,这意味着您必须使用部分唤醒锁定,否则如果设备超时或某人按下电源按钮,你的BroadcastReceiver是无用的。如果硬件功能(如GPS)可以在有数据的时候简单地打开CPU,然后发送它的意图,那将会很不错。我不确定,但我相信只有Wi-Fi和内置的电话。 – AndroidDev 2013-03-13 06:50:15
这不是100%正确的。对于LocationProviders,您注册以接收Intent,即使设备“睡着”,您也会收到它。 – 2013-03-13 07:01:57
这可能是因为Android会自动添加部分唤醒锁来处理位置提供程序,在这种情况下,设备根本没有睡着。它不仅需要接收位置,而且还可能对其执行软件处理(如检测接近度),它怎么会睡着呢。 – AndroidDev 2013-03-13 07:04:44