AlarmManager setRepeating忽略间隔

时间:2012-02-14 10:47:12

标签: android alarmmanager

我使用此代码在我们的业务应用程序中设置警报:

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分钟启动

任何见解都会有所帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

想到即时的建议 - 确保您不会在其他地方设置具有相同意图和不同价值的警报。意图不必是同一个对象,请参阅AlarmManager中的set methods文档。