android重复警报,应按月重复,每个月在同一天重复,依此类推
Posted
技术标签:
【中文标题】android重复警报,应按月重复,每个月在同一天重复,依此类推【英文标题】:android repeating alarm, should repeat on monthly basis and on same day for each month so on after its set 【发布时间】:2014-12-26 01:35:28 【问题描述】:警报应每月重复一次,每月在同一日期重复一次,依此类推 就像如果我在 10 月 31 日设置警报,那么它应该在有 31 天的月份的第 31 天重复,因为我们每个月的天数不同 我无法确定此警报的间隔,请帮助我如何确定此 INTERVAL_Value 必须是什么或如何以其他方式处理它
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_Value, alarmIntent);
【问题讨论】:
看看this是否有帮助。 我想出了另一种方式来发布它作为一个答案,我认为这就是它可以工作 【参考方案1】:我们可以从源中接收 currentMonth 值,它是一个整数
if (currentMonth == Calendar.JANUARY || currentMonth == Calendar.MARCH || currentMonth == Calendar.MAY || currentMonth == Calendar.JULY
|| currentMonth == Calendar.AUGUST || currentMonth == Calendar.OCTOBER || currentMonth == Calendar.DECEMBER)
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 31, alarmIntent);
if (currentMonth == Calendar.APRIL || currentMonth == Calendar.JUNE || currentMonth == Calendar.SEPTEMBER
|| currentMonth == Calendar.NOVEMBER)
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 30, alarmIntent);
if (currentMonth == Calendar.FEBRUARY)//for feburary month)
GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
if(cal.isLeapYear(year))//for leap year feburary month
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 29, alarmIntent);
else //for non leap year feburary month
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 28, alarmIntent);
【讨论】:
【参考方案2】:您应该使用cal.getActualMaximum(Calendar.DAY_OF_MONTH));
。
无论月份如何,这都会为您提供每个月的最大日期。
【讨论】:
以上是关于android重复警报,应按月重复,每个月在同一天重复,依此类推的主要内容,如果未能解决你的问题,请参考以下文章