我想在特定时间每天设置通知/闹钟。请注意,这些时间可能每天都不同。例如,我有一个数据库,我可以从中获得5个不同的条目/时间,例如早上6点,下午1点30分,下午4点30分,晚上7点30分,晚上10点。我想为这些时间设置闹钟。第二天这些时间可能会有所不同。他们可能会关闭2-5分钟或更长时间。 基本上我不能每天在同一时间设置定期闹钟。我需要检查我的数据库中的条目,以了解我应该安排它的时间。
这样做的有效方法是什么?我查看了一些堆栈溢出问题,用于设置多个警报。但这里我该怎么做?我应该只阅读整周的数据库条目,即5天/天,连续7天......并且一起设置大约35个警报?或者我应该一次设置一个警报。当该警报被触发时,只需从数据库中读取下一个条目并为该时间安排警报?
答案 0 :(得分:1)
编写一个服务,每天在特定时间从数据库中获取5个值。
然后在AlarmManger中添加具有不同唯一ID的多个条目。
在特定时间添加闹钟
Calendar calendar = Calendar.getInstance();
//9 AM
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, YourClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
设置多个闹铃:
AlarmManager[] alarmManager=new AlarmManager[24];
intentArray = new ArrayList<PendingIntent>();
for(f=0;f<arr2.length;f++){
Intent intent = new Intent(AlarmR.this, Riciving.class);
pi=PendingIntent.getBroadcast(AlarmR.this, f,intent, 0);
alarmManager[f] = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager[f].set(AlarmManager.RTC_WAKEUP,arr2[f] ,pi);
intentArray.add(pi);
}
希望这应该有用。