【发布时间】:2020-02-27 21:19:11
【问题描述】:
我正在开发一个应用程序,它需要在用户设置的确切时间执行特定操作。为此,我使用setExactAndAllowWhileIdle() 方法,因为this documentation 表示具有android 6.0 或更高版本的android 设备具有打盹模式概念,如果设备保持空闲一段时间,那么它将进入打盹模式并且打盹模式会限制警报。如果我想在设备进入打盹模式时发出警报,那么我有setExactAndAllowWhileIdle() 方法,如文档所述。本文档还包含手动方式使设备进入打盹模式以进行测试。所以,我正在使用这种方式进行测试,但是当设备进入打盹模式并且当我通过终端命令停止打盹模式时,我的警报不会触发,我过去的警报会立即触发。
所以,我的问题是 setExactAndAllowWhileIdle() 这个方法不能在打盹模式下工作,但它应该按照文档中的说明工作。我知道这种方法的局限性,我每 9 分钟只能发出一个警报,并且我遵循此规则。所以,我不明白问题出在哪里。
我的代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC, d.getTime(), pendingIntent);
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
alarmManager.setExact(AlarmManager.RTC, d.getTime(), pendingIntent);
else
alarmManager.set(AlarmManager.RTC, d.getTime(), pendingIntent);
是方法问题还是我做错了??
【问题讨论】:
标签: java android alarmmanager