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重复警报,应按月重复,每个月在同一天重复,依此类推的主要内容,如果未能解决你的问题,请参考以下文章

生成 0, 1,...n-1, n 个 k 数的所有可能组合。每个组合应按升序排列[重复]

如何在 Android 中停止重复警报服务?

SwiftUI同一按钮的多个警报[重复]

Android - 空闲时允许重复警报

Android重复警报未正确重复

在Android警报管理器中设置时间-立即触发警报[重复]