android - android 转换到打瞌睡模式需要多长时间?

标签 android android-6.0-marshmallow

在安卓版本 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/

相关文章:

java - 从 firebase 实时数据库中删除用户时 Android 应用程序崩溃

android - 将我的应用移植到 Google TV 时出错

java - 上下文在Fragment中返回null

android - CATEGORY_INFO 在 Android 中有什么用?

Android Marshmallow : java. lang.RuntimeException:无法连接到相机服务

android - 如果在 fragment 和 Activity 中都定义了 onRequestPermissionsResult,则不会在 fragment 中调用

android - 与其他应用共享数据时 Android M 上的权限

android - Android Studio 上的 Qt

Android 6.0 向后兼容

android - 在 api 23 中从 url 获取 json 的最佳实践