AlarmManager无法按时启动警报

时间:2011-10-11 01:13:13

标签: android

我尝试使用AlarmManager来设置从现在开始几秒后发生的警报。这是我的代码:

AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

Intent intent = new Intent(ALARM_ACTION);
PendingIntent alarmIntent = PendingIntent.getBroadcast(getBaseContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar rightNow = Calendar.getInstance();        
rightNow.add(Calendar.SECOND, NumOfSecond);
am.set(AlarmManager.RTC, rightNow.getTimeInMillis(), alarmIntent);

例如,如果rightNow是上午8:00,我希望我的闹钟发生在14400秒之后,即12:00 PM,那么NumOfSecond将被设置为14400.但是当代码运行时发生的事情并不总是发生在中午12:00,有时会延迟1或2分钟,甚至5分钟!有没有人知道这里到底发生了什么?

2 个答案:

答案 0 :(得分:2)

请尝试AlarmManager.RTC_WAKEUP

答案 1 :(得分:0)

因为当您将日期添加到日历时间时,它也会随着时间的推移而改变,因为您将在不同的时间编译并运行它。尝试在您想要运行警报的特定时间使用set方法。