在android中每周重复一次警报
Posted
技术标签:
【中文标题】在android中每周重复一次警报【英文标题】:Repeat Alarm once in a week in android 【发布时间】:2013-04-20 16:24:16 【问题描述】:我正在尝试在我的应用程序中开发警报功能,该应用程序在用户指定的工作日在固定时间运行。这里的问题是我的调度程序运行了所有天而不是在指定的日期运行。这是我为此编写的代码,请帮助解决此问题
Calendar calNow = Calendar.getInstance();
SimpleDateFormat simpDate;
simpDate = new SimpleDateFormat("kk:mm:ss");
if(in_Date==1)
calNow.set(Calendar.HOUR_OF_DAY, hourOfDay);
calNow.set(Calendar.MINUTE, minute);
calNow.set(Calendar.SECOND, 0);
calNow.set(Calendar.MILLISECOND, 0);
else if(in_Date==2)
calNow.set(Calendar.HOUR_OF_DAY, hourOfDay);
calNow.set(Calendar.MINUTE, minute);
calNow.set(Calendar.SECOND, 0);
calNow.set(Calendar.MILLISECOND, 0);
calNow.set(Calendar.DAY_OF_WEEK,in_SelectedDay);
etTime.setText(simpDate.format(calNow.getTime()));
Seconds=calNow.getTimeInMillis();
private void setAlarm()
//etTime.setText(simpDate.format(calNow.getTime()));
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
if(in_Date==1)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds,alarmManager.INTERVAL_DAY,pendingIntent);
else if(in_Date==2)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds,1 * 60 * 60 * 1000,pendingIntent);
【问题讨论】:
我想,这个必须要考虑到,当然在重启或者断电的时候这些AlarmManager实例会被清除掉,一个星期是很长的时间了设备:) 【参考方案1】:alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds, AlarmManager.INTERVAL_DAY, pendingIntent);
在这一行中,您将开始时间设置为用户选择的日期,然后将时间间隔设置为INTERVAL_DAY
。
您应该使用INTERVAL_DAY * 7
来确保它每周重复一次:
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds, AlarmManager.INTERVAL_DAY * 7, pendingIntent);
【讨论】:
有两种情况,一种是我用过 INTERVAL_DAY 的每天,另一种是我用过 1 * 60 * 60 * 1000 的每周 间隔以毫秒为单位定义。1 * 60 * 60 * 1000
毫秒是 1 小时。要获得一周的毫秒间隔,您可以使用7 * 24 * 60 * 60 * 1000
或INTERVAL_DAY * 7
您应该以static
的方式访问INTERVAL_DAY
AlarmManager.INTERVAL_DAY * 7
【参考方案2】:
您的闹钟是每天触发还是每小时触发一次?
我假设您的 in_Date 是选择每日警报或特定日期的指标。
我的想法-> 设置所有天的闹钟,在闹钟接收器中检查您的一天状况。
【讨论】:
以上是关于在android中每周重复一次警报的主要内容,如果未能解决你的问题,请参考以下文章