fbpx

Описание Alarm Manager

В прошлых уроках мы научились отображать уведомления по клику на кнопку и сохранять данные в БД. Это конечно круто, но правда, пока приложение всё ещё далеко от того что мы изначально задумали, а именно: напоминание о расписании тренировок. Когда разговор заходит о повторяющихся по расписанию действиях – то рекомендуется использовать AlarmManager. В этом уроке мы изучим, что это такое и далее реализуем механизм напоминаний.

AlarmManager используется для отправки пользователю разовых или повторяющихся сообщений в заданное время. Таким образом вы сможете создавать различные планировщики, будильники, реализовать выполнение регулярных сетевых запросов, запуска трудоёмких или дорогих операций, запланированных на определенное время и другие приложения, которые должны срабатывать по расписанию.

Важно помнить, что AlarmManager не зависит от конкретного приложения, это значит, что прописанные PendingIntents  сработают в определённое время или с заданным интервалом. Так как AlarmManager устанавливается за пределами вашего приложения, он может быть использован для вызова событий, принадлежащих приложению, или для запуска самого приложения, даже если оно закрыто. AlarmManager может стать мощным инструментом в сочетании с BroadcastReceiver о которых мы позже тоже поговорим.

Таким образом, AlarmManager чрезвычайно полезен, когда необходима возможность выполнять запланированные действия.

Алгоритм реализации механизма напоминаний через AlarmManager

Для реализации механизма напоминаний через AlarmManager нам необходимо:

  1. Зарегистрировать BroadcastReceiver для получения информации о запланированном действии
  2. Создать каналы уведомлений для каждого типа тренировки.
  3. После получения в  BroadcastReceiver информации о том, что пришло время для напоминания – создать уведомление и показать его пользователю.
  4. Определить время и дату, чтобы запланировать напоминание.
  5. Запланировать напоминания  через AlarmManager.
  6. Cоздать PendingIntent и добавить его к AlarmManager.

Шаги с 1 по 4 мы уже сделали. После того как пользователь создаст напоминание через UI интерфейс, который мы создали раннее, нам нужно будет передать эту информацию о напоминании в AlarmManager Давайте рассмотрим, как это сделать.