我有一个 hashmap (日期,整数),其中日期表示我应该触发警报的时间,整数表示如何很多天我应该重复警报。
在这里,为了使用android报警管理器设置多个报警,据说我应该设置具有唯一请求代码的待定意图。
我的问题是说例如:
My hashmap values-
9:00 AM - 4 days
3:00 PM - 7 days
据我所知,我应该设置总计(4 + 7 =)11个未决意图。 现在为了设置这些警报,我应该有11个唯一的请求代码..如果有大量的警报和日期数增加,有很多待定的意图设置,其中唯一性是一个问号!
我们应该生成独特的解决方案还是我们有最好的解决方案?
我正在学习这个概念,如果我错了,请纠正我。
提前致谢!
答案 0 :(得分:0)
让我们举个例子,我们有两件事要安排
您需要的是两个PendingIntent
,每个一个。
一次性的事情很清楚,我想,你使用AlarmManager#set()
并提供一个PendingIntent
唯一ID。
另一个,您将需要使用AlarmManager#setRepeating()
并将间隔传递为(一天中的毫秒),假设您希望警报每天在同一时间,并且这个将是另一个唯一的ID
您最终只需要2个唯一ID。
对于定期活动,您需要一个ID,每次重复都不需要ID。
这是诀窍,我不知道一个API,它允许您限制repeating
闹钟的天数。因此,基本上只要你的PendingIntent
触发,你需要检查这是否应该被触发的最后一天,如果是,你可以使用AlarmManager#cancel()
来执行此操作。
想到的第一个想法是计算该事件的结束时间,如果你在那个时间过去了,那么每当意图发生时都要检查。
代码示例:
PendingIntent alarmIntent = PendingIntent.getBroadcast(getApplicationContext(),uniqueid, intent, PendingIntent.FLAG_UPDATE_CURRENT)
long alarmTimeInMillis = ..; // your own value here
long oneDayInterval = 1000 * 60 * 60 * 24; // 24 hours in millis
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimeInMillis,
oneDayInterval, alarmIntent);
另请参阅documentation,以确定哪种方法最符合您的要求。