Android AlarmManager中重复报警的不同时间间隔

Android AlarmManager中重复报警的不同时间间隔,android,alarmmanager,alarm,Android,Alarmmanager,Alarm,我正在研究AlarmManager的setRepeating(@AlarmType int-type,long triggerAtMillis,long intervalMillis,PendingIntent操作)方法,希望解决一个用例 用例是我想用不同的intervalMillis值设置重复报警。我想在2小时、5小时和第二天早上9点后显示通知。或者我想在每个月的第一天做点什么 我有两种解决办法。我可以一次设置所有报警,也可以在收到前一个报警时设置下一个报警(如果没有报警,则与第二个用例更相似

我正在研究AlarmManager的
setRepeating(@AlarmType int-type,long triggerAtMillis,long intervalMillis,PendingIntent操作)
方法,希望解决一个用例

用例是我想用不同的
intervalMillis
值设置重复报警。我想在2小时、5小时和第二天早上9点后显示通知。或者我想在每个月的第一天做点什么

我有两种解决办法。我可以一次设置所有报警,也可以在收到前一个报警时设置下一个报警(如果没有报警,则与第二个用例更相似)。问题是,如果没有触发警报,我将无法触发更多警报,整个链条将断开


如果我错过了,安卓系统是否提供了任何功能?或者安卓系统是否应该提供这样的灵活性?

有很多方法可以实现这一点。无论如何,它们都需要一个共同的东西——数据库。这显然很容易理解,您需要数据库来存储以下信息:
-闹钟是否有效(例如,或应关闭,如在时钟应用程序中)
-应在何时启动(例如,通过
onBootReceived
,它需要检查是否必须安排新的警报)

现在,我们来谈一谈PendingContent
如果您使用相同的
pendingent
-我的意思是,意图、传入的数据、请求代码和操作都是相同的,则设置新警报后,所有旧警报都将被覆盖和取消。为了避免这种情况,您必须将uri传递给您创建的每个报警<代码>Uri您只需从数据库中获取

示例:
您希望安排在下午5点、晚上8点和第二天上午10点触发
pendingent
警报。假设您决定使用
setRepeating()
而不是使用
setExactAndAllowHileIDLE()
设置报警3次。您必须做的是将这3个指定时间及其日历日传入数据库,将间隔设置为每3小时触发一次,并且每次警报触发时,它都必须在数据库中检查是否是触发警报的时间。在这种情况下,您将产生更多的唤醒锁(每3小时一次),但您将确保您的警报将被触发

也许我描述得不太清楚,但我希望你能理解。我还将提供一些链接,介绍如何设置这些警报以及
AlarmManager
如何查看
PendingEvent
s:


使用

1.肯定每15分钟触发一次。在我们的一个应用程序中测试并使用它。 2.存储JobService首次启动的时间。3.检查从开始到现在的时间差,然后执行操作