Я хочу, чтобы alarmManager выполнял задание каждые 5-е число в 3 часа дня. Как мне это сделать?
Первый запуск зависит от того, когда пользователь устанавливает приложение. Хорошо, я могу сделать математику, подсчитав, сколько мс потребуется до следующего 5-го числа месяца, но я надеюсь, что есть более простой способ
параметр повторения дает мне настоящую головную боль. Я могу установить только один фиксированный интервал. но время между двумя месяцами не фиксируется, так как иногда у меня 30, иногда 31 день (не говоря уже о Февре).
Как мне сделать это лучше всего?
С уважением, А.
Вы можете сделать это намного проще, посмотрите на класс Date:
http://developer.android.com/reference/java/util/Date.html
И попробуйте что-нибудь вроде: Pseudo:
// This month 5th
Date date = new Date();
date.setDay(5);
// Next month the 5th
Date nextDate = new Date();
nextDate.setDay(5);
nextDate.setMonth(date.getMonth()+1);
Забастовкa > У вас возникнут проблемы, когда вы придете к концу года, но это меньше проблем, чем у вас на данный момент.
Есть еще один API Дата, и некоторые из них исправят проблему года. Просто осмотритесь.
ИЗМЕНИТЬ
Только что заметил, что устаревшее использование Calendar:
http://developer.android.com/reference/java/util/Calendar.html
Calendar now = Calendar.getInstance();
now.setField(Calendar.DAY_OF_MONTH, 5);
// Next month the 5th
Calendar nextDate = new = Calendar.getInstance();
nextDate.setField(Calendar.DAY_OF_MONTH, 5);
nextDate.setField(Calendar.MONTH_OF_YEAR, date.getField(Calendar.MONTH_OF_YEAR)+1); // issues in december
Calendar
- лучший выбор, чемDate
.