0

我想每天在特定时间设置通知/警报。请注意,这些时间可能每天都不同。例如,我有一个数据库,我每天可以从中获得 5 个不同的条目/时间,例如早上 6 点、下午 1.30 点、下午 4.30 点、晚上 7.30 点、晚上 10 点。我想为这些时间设置闹钟。第二天,这些时间可能会有所不同。它们可能会关闭 2-5 分钟或更长时间。基本上我不能每天在同一时间设置重复警报。我需要检查我的数据库中的条目,以了解我应该安排什么时间。

有什么好的和有效的方法来做到这一点。我查看了一些设置多个警报的堆栈溢出问题。但是在这里我该怎么做呢?我应该只阅读整个星期的数据库条目,即 5 次/天,共 7 天..并一起设置大约 35 个警报吗?或者我应该一次只设置一个闹钟。当该警报被触发时,只需从数据库中读取下一个条目并为该时间安排一个警报?

4

1 回答 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);

}

希望这应该有效。

于 2013-04-16T06:39:10.877 回答