【发布时间】:2012-02-14 10:47:12
【问题描述】:
我使用此代码在我们的业务应用程序中设置警报:
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 分钟后启动
任何见解都会有所帮助。谢谢!
【问题讨论】:
标签: android alarmmanager