在Android版6.0+中 假设用户已经离开了某个地方的android,拔掉电源按钮,按下电源按钮等等。
在最终进入空闲状态之前,Android在每个状态中花费了多少时间,例如非活动,空闲等待等?
现在一旦处于空闲模式,进入idle_maintenance状态需要多长时间,以及在idle_maintenance模式下保持多长时间?
这些值是常量还是可配置的还是依赖于Android版本/制造商..
请告知我这对于如何调整我的Android版6.0 / api 23 +的应用程序做出重要决定非常重要
答案 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
等。我不知道有关于此的任何官方文件,所以我的解释是一丝不苟。