Повторение локальных уведомлений от начальной даты до конечной даты, а также 1-4 раза в день Android - PullRequest
0 голосов
/ 03 июня 2019

У меня есть приложение, в котором мне нужно установить некоторые локальные уведомления с данными, которые у меня есть.Я могу получить локальные уведомления для жестко запрограммированного значения времени, используя AlarmManager, PendingIntent и BroadcastReciever.

Теперь мой вопрос заключается в том, что мне нужно настроить локальные уведомления / напоминания от начальной даты до конечной даты, и этоможет быть 1-4 раза в день (т. е. частота может быть 1-4 раза в 4 раза).

Скажите

Start Date : June 3 2019

END Date   : June 30 2019

Frequency  : 2 times a day at 9:00 AM(Time1) and 6.00PM(Time2)

Начиная с 3 июня я должен получать локальные уведомления каждый день по адресу9.00 и 18.00 до 30 июня.

Обновлено Я попытался создать несколько напоминаний, установив различные Действия, как предложено Дэвидом, но это не работает. Возможно, я что-то упустил.Может кто-нибудь также сказать мне, как установить напоминания в определенные дни недели?

1 Ответ

1 голос
/ 03 июня 2019

Вы можете установить столько будильников, сколько захотите.Хитрость заключается в том, чтобы убедиться, что они AlarmManager считаются "уникальными".Чтобы сделать их «уникальными», вы можете использовать один из следующих методов:

  • Использовать другой (уникальный) параметр requestCode при вызове PendingIntent.getBroadcast()
  • Использовать другой(уникальное) ДЕЙСТВИЕ или ДАННЫЕ в Intent, который вы передаете PendingIntent.getBroadcast()

Невозможно установить будильник, который будет повторяться ежедневно в течение определенного количества дней.Однако вы можете настроить повтор будильника каждый день, и когда срабатывает будильник, проверьте в BroadcastReceiver, сработал ли будильник в последний раз, и если да, отмените его, чтобы он больше не срабатывал вбудущее.Для этого вам нужно будет помнить день, когда он «истекает», что вы можете сделать, либо сохранив эту информацию в базе данных или SharedPreferences, либо добавив эту информацию как «дополнительную» к Intent, которыйпередается в BroadcastReceiver.

ПРИМЕЧАНИЕ: В Android много правил планирования тревог, чтобы попытаться оптимизировать срок службы батареи.Если ваш будильник не должен срабатывать в точное время, Android изменит расписание на более оптимальное время.Есть способы заставить будильник срабатывать в точное время, но вы не можете надежно установить повторяющееся точное время.Если вам нужно точное время, запланируйте будильник один раз, а когда он сработает, назначьте следующий.Прочтите о том, как AlarmManager работает и как лучше планировать свои тревоги на https://developer.android.com/training/scheduling/alarms

...