首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java用间隔设置警报管理器,并在特定时间停止它

Java用间隔设置警报管理器,并在特定时间停止它
EN

Stack Overflow用户
提问于 2015-03-27 15:08:39
回答 1查看 364关注 0票数 0

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

例如:

我把标题为“截止日期JAVA”的任务设置为"17:00 27-3-2015“。我需要在"16:00 27-3-2015“设置警报,每5分钟一次,直到"17:00 27-3-2015”。

我有一个setReminder方法:

代码语言:javascript
复制
new ReminderManager(this).setReminder(mRowId, rCalendar, mCalendar);

mRowId是任务的ID,rCalendar是任务之前的时间,所以16:00,mCalendar是最后的提醒时间。

我正在为setReminder使用以下代码:

代码语言:javascript
复制
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的代码

代码语言:javascript
复制
private AlarmManager mAlarmManager;
public ReminderManager(Context context) {
    mContext = context;
    mAlarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
}
EN

回答 1

Stack Overflow用户

发布于 2015-03-27 15:39:46

由于您使用的是安卓库中的AlarmManager类,这并不太困难。

为了做到这一点,您需要跟踪重复警报何时响起,以便捕获是否应该是“最后一个警报”。一旦确定最后一个被激活,您可以称之为:

代码语言:javascript
复制
mAlarmManager.cancel(pi);

cancel操作采用PendingIntent,并取消设置相同PendingIntent实例的任何警报。这将阻止警报在最后一次爆炸后继续进行。

这里有一个关于报警取消的相关帖子:Delete alarm from AlarmManager using cancel() - Android

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29303961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档