Java使用间隔设置alarmmanager并在特定时间停止它

时间:2015-03-27 15:08:39

标签: java android

我正在使用Java构建任务提醒(使用Eclipse)。任务提醒需要在任务之前的特定时间提示提醒。此外,它需要在任务之前每隔X分钟重复一次,最后在任务提醒设置的特定时间,它应该发送最后一个提醒。

例如:

  

我设置了一个标题为#34; Deadline JAVA" at" 17:00 27-3-2015"。我需要在" 16:00 27-3-2015"和每5分钟设置一次闹钟,直到" 17:00 27-3-2015"。

我有setReminder方法:

new ReminderManager(this).setReminder(mRowId, rCalendar, mCalendar);

mRowId是任务中的ID,rCalendar是任务之前的时间,因此是16:00,mCalendar是最终提醒时间。

我将此代码用于setReminder:

public void setReminder(Long taskId, Calendar when, Calendar when2) {
    Intent i = new Intent(mContext, OnAlarmReceiver.class);
    i.putExtra(RemindersDbAdapter.KEY_ROWID, (long) taskId);

    int ID = taskId.intValue();

    PendingIntent pi = PendingIntent.getBroadcast(mContext, ID, i,
            PendingIntent.FLAG_UPDATE_CURRENT);

    mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            when.getTimeInMillis(), 300000 , pi);
}

这很有效。警报开始,每5分钟重复一次。现在最困难的部分,我需要一些帮助的地方是发送一个最终警报并让警报停止重复。我该怎么做?

编辑:mAlarmManager的代码

private AlarmManager mAlarmManager;
public ReminderManager(Context context) {
    mContext = context;
    mAlarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
}

1 个答案:

答案 0 :(得分:0)

由于您使用的是Android库中的AlarmManager类,因此这并不困难。

为了做到这一点,你需要跟踪重复闹钟何时熄灭,以便捕捉它是否应该是最后一个闹钟。'一旦确定最后一个被激活,你可以这样称呼:

mAlarmManager.cancel(pi);

取消操作需要PendingIntent并取消任何具有相同PendingIntent实例集的警报。这将在最后一次关闭后停止警报继续。

以下是关于取消警报的相关帖子:Delete alarm from AlarmManager using cancel() - Android

相关问题