22

我正在搜索 SO 和网络,但我找不到针对我的特定问题的足够答案。好的,我们开始:

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

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

4

3 回答 3

26

您永远无法确定设备是否已进入睡眠状态。充其量,我可以给你一个清单,以确保设备没有进入睡眠状态:

  • 屏幕开启 - 需要 CPU 和 GPU,因此需要 RAM,才能保持活动状态
  • 任何持有唤醒锁的应用程序 - 即使是最低的唤醒锁也会让 CPU 保持开启状态,尽管屏幕可能会关闭

除此之外,不能保证设备会n在屏幕关闭几秒钟后进入睡眠状态,即使没有保持唤醒锁也是如此。这取决于原始设备制造商,他们可以改变这一点。

请记住,Android 设备可以选择在屏幕进入睡眠状态后让设备在一定时间内保持解锁状态。

于 2013-03-25T16:42:01.273 回答
9

将手机与笔记本电脑进行比较时,功耗差异很小。大多数情况下,笔记本电脑通过充电器直接供电。(大多数情况下,我们用笔记本电脑充电)。手机大多依靠电池供电。(我们很少随身携带充电器)。

牢记这一点,android 设计了这样一种方式,即如果用户不与手机交互,手机将不会消耗电池电量。这是为了增加用户的电池备份时间。

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

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

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

你的问题:我怎么知道我的手机什么时候会进入睡眠状态?-:很简单,当 LCD 电源关闭时,它会在几分之一秒内进入睡眠模式。

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

于 2013-12-06T11:59:59.647 回答
6

要在 Android 6.0 中测试睡眠模式/打瞌睡,您应该使用以下命令:

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

更多信息请参见此处:针对打盹和应用待机进行优化

于 2016-01-06T15:20:33.487 回答