2011-10-11 94 views
0

我尝试使用AlarmManager来设置从现在开始几秒后发生的报警。这里是我的代码: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点发生,有时会延迟1或2分钟,甚至5分钟!有人知道这里发生了什么吗?

回答

2

改为尝试AlarmManager.RTC_WAKEUP

0

因为当您将秒添加到您的日历时间时,它也会随时间变化,因为您将在不同的时间编译和运行它。尝试在想要运行闹钟的特定时间使用set方法。