【问题标题】:Android M (preview) Doze mode and AlarmManagerAndroid M(预览版)打盹模式和 AlarmManager
【发布时间】:2015-10-02 09:18:31
【问题描述】:

我正在尝试测试我们的 Android 应用在操作系统进入打盹模式时的行为。我正在使用运行 Android API 23(修订版 1)的模拟器。 应用程序使用类型为 ELAPSED_REALTIME_WAKEUP 的方法 setInexactRepeating 通过 AlarmManager 启动服务。我将警报设置为大约每三分钟触发一次(仅用于测试目的)。经过几次尝试(官方指南非常不清楚),我通过锁定模拟器的屏幕并运行 dumpsys 建议的命令,成功地将模拟器置于 IDLE 状态。 当设备处于空闲状态时,我仍然可以看到警报正在启动服务。 这不应该是预期的行为。我期待警报停止。 这是一个错误吗?还是我错过了什么?

【问题讨论】:

  • 是模拟器的问题。在真实设备上,警报在 IDLE 期间停止,如文档所述。

标签: android emulation android-6.0-marshmallow


【解决方案1】:

下面供测试使用代码。

adb shell dumpsys deviceidle enable 
adb shell dumpsys battery unplug
adb shell dumpsys deviceidle step
adb shell dumpsys deviceidle force-idle

使用setAndAllowWhileIdle 强制唤醒智能手机。

就我而言,我使用这个:

if (android.os.Build.VERSION.SDK_INT > 22) {
   am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
} else {
   am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, sender);
}

我相信预期是警报被停止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2020-02-02
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多