Android AlarmManager запускается один раз в месяц

1

Я хочу, чтобы alarmManager выполнял задание каждые 5-е число в 3 часа дня. Как мне это сделать?

  • Первый запуск зависит от того, когда пользователь устанавливает приложение. Хорошо, я могу сделать математику, подсчитав, сколько мс потребуется до следующего 5-го числа месяца, но я надеюсь, что есть более простой способ

  • параметр повторения дает мне настоящую головную боль. Я могу установить только один фиксированный интервал. но время между двумя месяцами не фиксируется, так как иногда у меня 30, иногда 31 день (не говоря уже о Февре).

Как мне сделать это лучше всего?

С уважением, А.

Теги:
timer
repeat
alarmmanager
timertask

1 ответ

0
Лучший ответ

Вы можете сделать это намного проще, посмотрите на класс 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
  • 0
    Calendar - лучший выбор, чем Date .
  • 0
    @CommonsWare Я редактировал, когда вы комментировали :-) Обычно в Java используется DateMidnight (), так как он имеет плюс (продолжительность); учитывать месяцы и годы, какие-либо рекомендации?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню