我使用此代码在我们的业务应用程序中设置警报:
private void setupAlarm() {
final Context c = getApplicationContext();
final AlarmManager alarm =
(AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
final Intent i = new Intent(c, AlarmReceiver.class);
final PendingIntent sender =
PendingIntent.getBroadcast(c, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
final long startFromNow = System.currentTimeMillis()+10000;
final long timer = 5*60*1000;
alarm.setRepeating(AlarmManager.RTC_WAKEUP, startFromNow, timer, sender);
}
我无法理解为什么不遵守警报的间隔。第一次警报在10秒后开始(如预期的那样),之后每隔2分钟开始一次(122秒至127秒),这是错误的。间隔是5分钟,还是我错了?
我在一个更简单的应用程序中使用这个确切的代码:一个设置重复警报的活动,接收器只创建一个日志。它有效。
什么可以使AlarmManager行为如此不同? 我试过:
set()
并在闹钟接收器中使用另一个set()
超过5分钟:2分钟启动setInexactRepeating()
代替setRepeating()
:2分钟启动任何见解都会有所帮助。谢谢!
答案 0 :(得分:2)
想到即时的建议 - 确保您不会在其他地方设置具有相同意图和不同价值的警报。意图不必是同一个对象,请参阅AlarmManager中的set methods文档。