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

Ahm*_*med 11 android android-6.0-marshmallow

在android版本6.0+中假设用户已经离开了某个地方的android,拔掉了电源按钮以锁定它等等.

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

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

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

请注意,对于我如何调整我的Android 6.0/api 23+应用程序做出重要决定非常重要

Irf*_*rfy 8

您不必担心设备何时进入打ze模式,而应该关注手机处于打ze模式时我的应用程序如何运行。要对此进行测试,您只需要强迫手机打do睡并观察应用程序的行为即可:

$ 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
Run Code Online (Sandbox Code Playgroud)

更好的是,您应该在所有不同的预休眠状态下测试应用程序:

$ 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
Run Code Online (Sandbox Code Playgroud)

您应在上述所有状态下测试您的应用,以确保其正常运行。另请参阅官方文档


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

mNextAlarmTime=+59m35s863ms
Run Code Online (Sandbox Code Playgroud)

来源于:

idle_to=+60m0s0ms
Run Code Online (Sandbox Code Playgroud)

同样,除非用户唤醒电话,否则下一个空闲超时将受到此参数的影响更大:

mNextIdleDelay=+2h0m0s0ms
Run Code Online (Sandbox Code Playgroud)

等等。我不知道有关此的任何官方文档,因此请以我的观点作为解释。

  • 知道何时打do睡模式没有什么错。该知识对于缩小有问题的后台服务的问题可能很有用。 (4认同)