您不应该关注设备何时进入打盹模式,而应关注当手机处于打盹模式时我的应用程序的行为方式.要测试这一点,您只需要强制打开手机并观察应用的行为:
$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的完整输出.当设备处于空闲状态时,接近输出的末尾,您将看到:
mNextAlarmTime=+59m35s863ms
其来源于:
idle_to=+60m0s0ms
此外,除非用户唤醒电话,否则下一个空闲超时将会更大,受此参数的影响:
mNextIdleDelay=+2h0m0s0ms
我不知道有关于此的任何官方文件,所以请我解释一下.