当前位置:  开发笔记 > 编程语言 > 正文

在BroadcastReceiver重新安排之前,AlarmManager会立即触发警报

如何解决《在BroadcastReceiver重新安排之前,AlarmManager会立即触发警报》经验,为你挑选了0个好方法。

我有一个BroadcastReceiver重新安排启动和时间变化等事件的警报.但是当时间超过警报的触发时间时(例如,当用户手动更改设置的时间时),AlarmManager在我可以添加一天重新安排警报之前立即触发警报.我怎么能避免这个?

我目前正在使用set并添加方法Calendar来安排警报.

        for (int dayOfWeek = Calendar.SUNDAY; dayOfWeek <= Calendar.SATURDAY; dayOfWeek++) {
            if (alarm.getRepeatingDay(dayOfWeek - 1) && dayOfWeek >= nowDay &&
                    !(dayOfWeek == nowDay && alarm.timeHour < nowHour) &&
                    !(dayOfWeek == nowDay && alarm.timeHour == nowHour && alarm.timeMinute <= nowMinute)) {

                calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
                alarmSet = true;
                break;
            }
        }

        if (!alarmSet) {
            for (int dayOfWeek = Calendar.SUNDAY; dayOfWeek <= Calendar.SATURDAY; dayOfWeek++) {
                if (alarm.getRepeatingDay(dayOfWeek - 1) && dayOfWeek <= nowDay) {
                    calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
                    calendar.add(Calendar.WEEK_OF_YEAR, 1);
                    break;
                }
            }
        }

它也在文档中说明:

如果指定的触发时间是过去的,则会立即触发警报.

如何改变这种行为?

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有