android设备什么时候进入睡眠模式?

时间:2013-03-25 16:38:36

标签: android sleep-mode android-powermanager

我正在搜索SO和网络,但我找不到足够的答案来解决我的问题。好的,我们走了:

每个用户都可以在android上修改屏幕超时。 (当屏幕空闲__秒/分钟时关闭屏幕 - 用户选择)。但是用户只能修改屏幕超时,而不能在设备实际进入睡眠状态时修改。我发现设备进入睡眠状态会发生什么:( CommonsWare非常好的答案)Android Sleep/Standby Mode

好的,我的问题很简单。我怎么知道我的手机何时会入睡?关闭屏幕后会立即进入睡眠状态吗?屏幕关闭后它会保持“清醒”一段时间吗?最重要的是:特定设备的睡眠模式是否与品牌设备不同(制造商如何实施)或者取决于ROM版本(例如,所有ICS供电设备将在屏幕关闭后X秒进入睡眠状态)?

3 个答案:

答案 0 :(得分:25)

你永远无法确定该设备是否已进入睡眠状态。最好的情况是,我可以列出一些确保设备没有进入睡眠状态的事项:

  • 屏幕开启 - 需要CPU和GPU以及RAM保持活动
  • 任何持有唤醒锁的应用程序 - 即使是最低的唤醒锁也能保持CPU开启,但屏幕可能会关闭

除此之外,无法保证设备在屏幕关闭后n秒进入睡眠状态,即使没有按下按钮。这取决于OEM,他们可以改变这一点。

请注意,Android设备可以选择在屏幕进入睡眠状态后将设备解锁一段时间。

答案 1 :(得分:9)

将手机与笔记本电脑进行比较时,功耗会有很小的差异。 笔记本电脑大多数时候通过充电器直接供电。 (大部分我们带笔记本电脑充电)。 手机主要使用电池供电。 (我们很少带充电器。)

通过记住这一点,Android设计的方式是,如果用户没有与手机交互,手机将不会消耗电池电量。这是为了增加用户的电池备份时间。

这就是为什么当LCD屏幕电源关闭时(这意味着用户没有与手机交互),在几秒钟内CPU也将进入一种模式(睡眠模式),在这种模式下它可以完成最少的工作并节省电池电量。当CPU处于睡眠模式时,它仅接受来自RIL(无线电接口层)的命令,该命令基本上是SMS和呼叫功能以及警报。除此之外,CPU将停止执行其他应用程序功能。

注意:如果任何应用程序在CPU处于睡眠模式时需要CPU时间进行紧急工作,则可以使用WAKE LOCKS请求CPU时间。

例如:即使用户已关闭LCD屏幕,MP3应用程序也必须继续在其服务中播放歌曲。这意味着MP3应用程序的服务已使用WAKE LOCKS请求CPU时间。

您的问题:我怎么知道我的手机何时会入睡? - Ans :当LCD电源关闭时,简单就会进入睡眠模式,只需几秒钟。

您的问题:特定设备的睡眠模式与品牌设备不同   - Ans :由于android是开源的,任何OEM都可以使用驱动程序层,这是GPU许可证,可以修改电源管理器驱动器以表现不同。所有这些睡眠模式和唤醒锁最终都在Linux内核层的Power Manager驱动程序的控制之下。

答案 2 :(得分:5)

在Android 6.0中测试睡眠模式/打瞌睡,你应该使用下一个命令:

$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step

更多信息请参见此处:Optimizing for Doze and App Standby