Как задать AlarmManager на определенное число каждого месяца?

Рейтинг: 1Ответов: 1Опубликовано: 24.04.2015

Допустим нужно вызывать уведомление каждое 5 число месяца (5 апреля, 5 мая, 5 июня и так далее), фиксированный интервал не подходит, потому что число дней в месяцах различается. Понятно что есть вариант - вызывать какой-то метод каждый день и проверять на соответствие заданной дате. Но как-то некрасиво дергать телефон каждый день и выводить его из спячки чтобы сработать 1 раз в месяц. Не могу придумать красивого решения.

AlarmManager alarmManager = (AlarmManager) cc.getSystemService(Context.ALARM_SERVICE);      
alarmManager.setRepeating(AlarmManager.RTC, dateTime+dateoffset, intervalInMillis, pintent);

Ответы

▲ 5Принят

Пример кода:

Calendar calendar = Calendar.getInstance();
calendar.set(2015, 04, 05, 0, 0, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pintent);

При срабатывании обрабатываете и выставляете новый, сменив месяц на следующий