Повторите запланированные задачи на выбранные дни в Android SDK Alarm Manager - PullRequest
4 голосов
/ 16 ноября 2011

Я пытался сделать это, не мешая экспертам, и прочитал множество тем здесь и на других сайтах.Очевидно, мой мозг не понимает, что нужно сделать, чтобы это сработало.

Моя цель состоит в том, чтобы приложение позволяло пользователю вводить время и один или несколько дней в неделю.Вся сторона графического интерфейса и сохранение дат и времени, которые я сделал, однако, чтобы диспетчер аварийных сигналов повторил, скажем, каждый понедельник в 14:00, а затем может отправить в 14:02.Я использовал объект календаря java для хранения времени и дней недели или даже использовал дату и день недели месяца.Затем они при необходимости преобразуются в миллисекунды для их считывания диспетчером аварийных сигналов.

Затем я использовал либо установленный диспетчер аварийных сигналов, либо настроил методы повтора для повторения события.Все, что я могу сделать, это заставить это произойти один раз, а затем, если я изменю дату и время эмулятора на другой понедельник, ничего не произойдет.

Графический интерфейс содержит часы и минуты в требуемых переменных, а затем они используются противобъекты календаря.

Диспетчер аварийных сигналов вызывает широковещательный приемник, чтобы произошло событие.

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

Просмотрено ссылок:


удалось выяснить это сейчас и так следует мой ответ:

Следующий код вычисляет оставшиеся дни междусейчас и день, необходимый для запланированного задания.переменная, день которой передается через параметр из метода, которому принадлежит этот код.В понимании этого дня, который представляет дни недели с 1 по 7, где 1 - воскресенье, 2 - понедельник и т. Д.

//This gets the current day of the week as of TODAY / NOW
int checkcurrentday = getcurtime.get(Calendar.DAY_OF_WEEK);

// This calculates the days between now and the day needed which is represented by whichday.
int numberofdays = Calendar.SATURDAY + whichday - checkcurrentday;

//Now add NOT set the difference of the days to your Calendar object
tMondayOn.add(Calendar.DATE, numberofdays);

1 Ответ

5 голосов
/ 16 ноября 2011

Ну, вам нужно сначала использовать Java Calendar API (или Joda!), Чтобы выяснить, когда наступит следующий понедельник.Установите будильник на это время в миллисекундах, затем используйте setRepeating и передайте long, представляющий интервал в одну неделю.

...