在安卓版本 6.0+ 假设用户已经将 android 留在某处,拔下电源,按下电源按钮将其锁定等。
在最终进入空闲状态之前,Android 在每个状态(例如非 Activity 状态、空闲等待状态等)中花费了多少时间?
现在一旦处于空闲模式,进入空闲维护模式需要多长时间,它在空闲维护模式下停留多长时间?
这些值是常量还是可配置的或取决于 android 版本/制造商..
请告知这对我做出关于如何针对 android ver 6.0/api 23+ 调整我的应用程序的重要决定很重要
最佳答案
您不应该关心设备何时进入休眠模式,而应该关心当手机处于休眠模式时我的应用程序如何运行。要对此进行测试,您只需让您的手机进入休眠状态并观察您的应用的行为:
$ 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 .
现在,如果您坚持要知道 doze 和 maintenance 的参数,您应该查阅 adb shell dumpsys deviceidle
的完整输出。当设备处于 IDLE
时,在输出的末尾附近您将看到:
mNextAlarmTime=+59m35s863ms
源自:
idle_to=+60m0s0ms
另外,除非手机被用户唤醒,否则下一次空闲超时会变大,受此参数影响:
mNextIdleDelay=+2h0m0s0ms
等我不知道有任何关于此的官方文档,所以请对我的解释持保留态度。
关于android - android 转换到打瞌睡模式需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483169/