如何在特定时间停止重复警报

时间:2013-05-11 06:29:13

标签: android

我使用下面的代码在早上8点开始闹钟,每隔1分钟重复一次。我想在中午12点重复此警报。我这样开始报警:

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent loggerIntent1 = PendingIntent.getBroadcast(this, 0,new Intent(this,AlarmReceiver.class), 0);
Calendar timeOff9 = Calendar.getInstance();
timeOff9.set(Calendar.HOUR_OF_DAY, 08);
timeOff9.set(Calendar.MINUTE, 00);
timeOff9.set(Calendar.SECOND, 00);


long duration = interval * 60 * 1000;
manager.setRepeating(AlarmManager.RTC_WAKEUP,timeOff9.getTimeInMillis(), duration, loggerIntent1);

并停止使用此代码:

Calendar timeOff = Calendar.getInstance();
timeOff.set(Calendar.HOUR_OF_DAY,12);
timeOff.set(Calendar.MINUTE,00);
timeOff.set(Calendar.SECOND, 00);

manager.set(AlarmManager.RTC_WAKEUP,timeOff.getTimeInMillis(), loggerIntent1);
manager.cancel(loggerIntent1);
loggerIntent1.cancel(); 

但停止的代码导致应用程序以错误的方式工作。 我正在编写代码,以便在第一次报警后立即停止报警。这是问题吗? 我需要写另一个警报吗?请指导。

1 个答案:

答案 0 :(得分:0)

也许还有另一种逻辑你可以尝试一下?

想象一下,继续使用你的第一部分代码来触发每个duration的意图。

但是在你的AlarmReceiver.class中,这将是检查当前时间的那个,并在时间超过12点时执行AlarmManager.cancel()。