【问题标题】:How to stop repeating alarm at specific time如何在特定时间停止重复警报
【发布时间】:2013-05-11 06:29:13
【问题描述】:

我使用以下代码在早上 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(); 

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

【问题讨论】:

标签: android


【解决方案1】:

也许您可以尝试另一种逻辑?

想象一下,继续执行您的第一部分代码,在其中触发每个 duration 的意图。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多