安卓 Java设置alarmmanager的时间间隔,并在特定时间停止
我正在用Java(使用Eclipse)构建一个任务提醒。任务提醒需要在任务开始前的特定时间提示提醒。此外,它需要在任务开始前每X分钟重复一次,最后在设置任务提醒的特定时间发送最后一次提醒
例如:
I set a task with title "Deadline JAVA" at "17:00 27-3-2015". I need to set an alarm at "16:00 27-3-2015", and every 5 minutes until "17:00 27-3-2015".
我有这个setReminder
方法:
new ReminderManager(this).setReminder(mRowId, rCalendar, mCalendar);
mRowId
是任务的ID,rCalendar
是任务之前的时间,因此16:00,mCalendar
是最后的提醒时间
我将此代码用于设置提醒:
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 楼答案
因为您使用的是Android库中的
AlarmManager
类,所以这并不太困难为了做到这一点,您需要跟踪重复警报何时发出,以便捕获该警报是否为“最后一个”一旦确定要激活最后一个,您可以将其称为:
cancel操作接受一个
PendingIntent
并取消具有相同PendingIntent
实例集的任何报警。这将阻止警报在最后一个警报响起后继续这里有一个关于警报取消的相关帖子:Delete alarm from AlarmManager using cancel() - Android