Android M (preview) Doze mode and AlarmManager
我正在尝试测试我们的 Android 应用在操作系统进入打盹模式时的行为。我正在使用运行 Android API 23(修订版 1)的模拟器。
应用程序使用类型 ELAPSED_REALTIME_WAKEUP 的方法 setInexactRepeating 通过 AlarmManager 启动服务。我将警报设置为大约每三分钟触发一次(仅用于测试目的)。经过几次尝试(官方指南非常不清楚),我通过锁定模拟器的屏幕并运行 dumpsys 建议的命令成功地将模拟器置于 IDLE 状态。
当设备处于空闲状态时,我仍然能够看到警报正在启动的服务。
这不应该是预期的行为。我期待警报停止。
这是一个错误吗?还是我错过了什么?
以下供测试使用代码。
1
2 3 4 |
adb shell dumpsys deviceidle enable
adb shell dumpsys battery unplug adb shell dumpsys deviceidle step adb shell dumpsys deviceidle force-idle |
使用
就我而言,我使用这个:
1
2 3 4 5 |
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); } |
我相信预期是警报被停止。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/269091.html