我想每天在特定时间设置通知/警报。 请注意,这些时间每天可能会有所不同。 例如,我有一个数据库,可以从中获得一天的5种不同条目/时间,例如6 am、1.30pm、4.30pm、7.30pm、10.00 pm。 我想为这些时间设置一个闹钟。 对于第二天,这些时间可能会有所不同。 他们可能会在2-5分钟或更长时间后离开。 基本上,我不能设置每天同一时间的重复警报。 我需要检查数据库中的条目以知道应该安排什么时间。

什么是执行此操作的好方法? 我查看了一些用于设置多个警报的堆栈溢出问题。 但是,我该怎么办呢? 我是否应该只读取整周的数据库条目,即每天5次,共7天?同时设置大约35条警报? 或者我应该一次只设置一个警报。 当发出该警报时,只需从数据库中读取下一个条目并计划该时间的警报?

===============>>#1 票数: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);

}

希望这应该工作。

  ask by fzansari translate from so

未解决问题?本站智能推荐: