Gau*_*han 5 android alarm alarmmanager
我正在寻找setRepeating(@AlarmType int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)AlarmManager的方法,并希望解决一个用例.
用例是我想设置具有不同intervalMillis值的重复警报.就像我想在2小时,5小时和第二天上午9点之后显示通知.或者我想在每个月的第一个日期做一些事情.
我有两个解决方案.我可以立即设置所有报警,也可以在收到上一个报警时设置下一个报警(如果没有报警与第二个用例更相似).问题是如果错过了触发警报,我将无法触发进一步的警报并且整个链条会断开.
如果我错过了它,Android是否有任何提供的东西,否则Android不应该提供这样的灵活性?
有很多方法可以实现这一目标。不管怎样,他们都需要一件共同的东西——数据库。这显然很容易理解,您需要数据库来存储以下信息:
- 警报是否有效(例如或应该关闭,如时钟应用程序)
- 何时应该触发(例如您重新启动设备并通过启动服务,
onBootReceived并且需要检查是否需要安排新的警报)
现在稍微谈谈PendingIntent
如果您安排一个具有相同的警报PendingIntent- 我的意思是,意图、传入的数据、请求代码和操作相同,则设置新警报后的每个旧警报都将被覆盖并取消。为了避免这种情况,您必须将 uri 传递给您创建的每个警报。Uri你可以简单地从数据库中获取。
示例:
您想要安排一个PendingIntent在下午 5 点、晚上 8 点和第二天上午 10 点触发的警报。假设您决定使用setRepeating()而不是使用 设置闹钟 3 次setExactAndAllowWhileIdle()。您必须做的就是在数据库中传递这 3 个指定时间及其日历日,设置每 3 小时触发一次的间隔,并且每次警报触发时都必须在数据库中检查是否是触发警报的时间。在这种行为中,您将产生更多的唤醒锁(每 3 小时一次),但您将确保警报会被触发。
可能我描述的不是很清楚,但希望你能理解。我还将提供一些链接,其中描述了如何设置这些警报以及如何AlarmManagers查看PendingIntents:
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |