我正在用Java构建一个任务提醒(使用Eclipse)。任务提醒需要在任务之前的特定时间提示提醒。此外,它需要在任务之前每隔X分钟重复一次,最后,在设置任务提醒的特定时间,它应该发送最后一个提醒。
例如:
我把标题为“截止日期JAVA”的任务设置为"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);
}发布于 2015-03-27 15:39:46
由于您使用的是安卓库中的AlarmManager类,这并不太困难。
为了做到这一点,您需要跟踪重复警报何时响起,以便捕获是否应该是“最后一个警报”。一旦确定最后一个被激活,您可以称之为:
mAlarmManager.cancel(pi);cancel操作采用PendingIntent,并取消设置相同PendingIntent实例的任何警报。这将阻止警报在最后一次爆炸后继续进行。
这里有一个关于报警取消的相关帖子:Delete alarm from AlarmManager using cancel() - Android
https://stackoverflow.com/questions/29303961
复制相似问题