android转换到打盹模式需要多长时间?

时间:2016-04-07 17:23:01

标签: android android-6.0-marshmallow

在Android版6.0+中 假设用户已经离开了某个地方的android,拔掉电源按钮,按下电源按钮等等。

在最终进入空闲状态之前,Android在每个状态中花费了多少时间,例如非活动,空闲等待等?

现在一旦处于空闲模式,进入idle_maintenance状态需要多长时间,以及在idle_maintenance模式下保持多长时间?

这些值是常量还是可配置的还是依赖于Android版本/制造商..

请告知我这对于如何调整我的Android版6.0 / api 23 +的应用程序做出重要决定非常重要

1 个答案:

答案 0 :(得分:5)

当设备进入打盹模式时,你不应该关注,而不是当手机处于打盹模式时我的应用程序如何表现。要对此进行测试,您只需强行打开手机并观察应用的行为:

$ adb version
Android Debug Bridge version 1.0.32
Revision eac51f2bb6a8-android
$ adb shell dumpsys deviceidle | grep mState
  mState=ACTIVE
$ adb shell dumpsys deviceidle force-idle
Now forced in to idle mode
$ adb shell dumpsys deviceidle | grep mState
  mState=IDLE

更好的是,您应该在所有各种预打盹状态下测试您的应用程序:

$ adb shell dumpsys deviceidle step
Stepped to: ACTIVE
$ adb shell dumpsys battery unplug # emulate unplugging the charging cable
$ for i in {1..5}; do adb shell dumpsys deviceidle step; done
Stepped to: IDLE_PENDING
Stepped to: SENSING
Stepped to: LOCATING
Stepped to: IDLE
Stepped to: IDLE_MAINTENANCE
# repeats IDLE and IDLE_MAINTENANCE forever
$ adb shell dumpsys battery reset
$ adb shell dumpsys deviceidle step
Stepped to: ACTIVE

您应该在上述所有状态下测试您的应用,以确保正常运行。另请参阅official documentation

现在,如果你坚持知道打瞌睡和维护的参数,你应该查阅adb shell dumpsys deviceidle的完整输出。当设备为IDLE时,靠近输出的末尾,您将看到:

mNextAlarmTime=+59m35s863ms

源于:

idle_to=+60m0s0ms

此外,除非用户唤醒手机,否则下一个空闲超时会更大,受此参数的影响:

mNextIdleDelay=+2h0m0s0ms

等。我不知道有关于此的任何官方文件,所以我的解释是一丝不苟。