Android AlarmManager запускается раз в месяц - PullRequest
1 голос
/ 31 марта 2011

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

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

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

Как бы я сделал это лучше всего?

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

1 Ответ

0 голосов
/ 31 марта 2011

Вы можете сделать это намного проще, взгляните на класс Date: http://developer.android.com/reference/java/util/Date.html

И попробуйте что-то вроде, Псевдо:

// 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);

У вас будут проблемы, когда вы придете к концу года, но это будет меньше проблем, чем сейчас.

Существуют другие API для работы с датами, и некоторые из них решат проблему года. Просто посмотрите вокруг.

EDIT

Только что заметил, что не рекомендуется использовать Календарь:

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
...