首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置告警后,AlarmManager立即触发告警

设置告警后,AlarmManager立即触发告警
EN

Stack Overflow用户
提问于 2017-10-19 17:21:18
回答 1查看 63关注 0票数 0

背景

我使用AlarmManager在每天上午11点显示通知

代码

代码语言:javascript
复制
mAlarmManager = (AlarmManager) appContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(appContext, AlarmReciever.class);
// Create a PendingIntent to be triggered when the alarm goes off
pIntent = PendingIntent.getBroadcast(appContext, AlarmReciever.REQUEST_CODE,
                    intent, PendingIntent.FLAG_CANCEL_CURRENT);
// Set the alarm to start at approximately 11:00 a.m.
Calendar alarmCal = Calendar.getInstance();
alarmCal.setTimeInMillis(System.currentTimeMillis());
alarmCal.set(Calendar.HOUR_OF_DAY, 11);
// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
Log.d("TIME IN MILLI", String.valueOf(alarmCal.getTimeInMillis()));
mAlarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, alarmCal.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pIntent);
setBootRecieverEnabled(); 

问题:

当我在App中设置闹钟时,闹钟会在一小段时间后触发。

EN

回答 1

Stack Overflow用户

发布于 2017-10-19 17:54:10

我已经找到了解决方案here

如果超过我们设置的时间,我们需要增加报警日期。

代码语言:javascript
复制
mAlarmManager = (AlarmManager) appContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(appContext, AlarmReciever.class);
// Create a PendingIntent to be triggered when the alarm goes off
pIntent = PendingIntent.getBroadcast(appContext, AlarmReciever.REQUEST_CODE,
                    intent, PendingIntent.FLAG_CANCEL_CURRENT);
// Set the alarm to start at approximately 11:00 a.m.
Calendar alarmCal = Calendar.getInstance();
alarmCal.setTimeInMillis(System.currentTimeMillis());
alarmCal.set(Calendar.HOUR_OF_DAY, 11);

解决方案-报警日历中的增量日期

代码语言:javascript
复制
if(now.after(alarmCal)){
    alarmCal.add(Calendar.DATE, 1);
}

..。

代码语言:javascript
复制
// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
Log.d("TIME IN MILLI", String.valueOf(alarmCal.getTimeInMillis()));
mAlarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, alarmCal.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pIntent);
setBootRecieverEnabled();

谷歌应该在文档中提到这一点。

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

https://stackoverflow.com/questions/46826612

复制
相关文章

相似问题

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