我正在使用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);
}
答案 0 :(得分:0)
由于您使用的是Android库中的AlarmManager
类,因此这并不困难。
为了做到这一点,你需要跟踪重复闹钟何时熄灭,以便捕捉它是否应该是最后一个闹钟。'一旦确定最后一个被激活,你可以这样称呼:
mAlarmManager.cancel(pi);
取消操作需要PendingIntent
并取消任何具有相同PendingIntent
实例集的警报。这将在最后一次关闭后停止警报继续。
以下是关于取消警报的相关帖子:Delete alarm from AlarmManager using cancel() - Android