Course Content
-
Разработка приложения Фитнес-календарь
- Описание проекта
- Разработка графического интерфейса для отображения списка запланированных тренировок
- Создание уведомления Notification
- Создание PendingIntent
- Разработка интерфейса для создания напоминания о тренировке
- Создание локальной БД для хранения информации о тренировках
- Создание BroadcastReceiver
- Создание каналов уведомлений
- Доработка методов для отображения уведомлений
- Описание Alarm Manager
- Реализация механизма напоминания через AlarmManager
- Cоздание PendingIntent и добавление его к AlarmManager.
- Выводы
Описание Alarm Manager
В прошлых уроках мы научились отображать уведомления по клику на кнопку и сохранять данные в БД. Это конечно круто, но правда, пока приложение всё ещё далеко от того что мы изначально задумали, а именно: напоминание о расписании тренировок. Когда разговор заходит о повторяющихся по расписанию действиях – то рекомендуется использовать AlarmManager. В этом уроке мы изучим, что это такое и далее реализуем механизм напоминаний.
AlarmManager используется для отправки пользователю разовых или повторяющихся сообщений в заданное время. Таким образом вы сможете создавать различные планировщики, будильники, реализовать выполнение регулярных сетевых запросов, запуска трудоёмких или дорогих операций, запланированных на определенное время и другие приложения, которые должны срабатывать по расписанию.
Важно помнить, что AlarmManager не зависит от конкретного приложения, это значит, что прописанные PendingIntents сработают в определённое время или с заданным интервалом. Так как AlarmManager устанавливается за пределами вашего приложения, он может быть использован для вызова событий, принадлежащих приложению, или для запуска самого приложения, даже если оно закрыто. AlarmManager может стать мощным инструментом в сочетании с BroadcastReceiver о которых мы позже тоже поговорим.
Таким образом, AlarmManager чрезвычайно полезен, когда необходима возможность выполнять запланированные действия.
Алгоритм реализации механизма напоминаний через AlarmManager
Для реализации механизма напоминаний через AlarmManager нам необходимо:
- Зарегистрировать
BroadcastReceiver
для получения информации о запланированном действии - Создать каналы уведомлений для каждого типа тренировки.
- После получения в
BroadcastReceiver
информации о том, что пришло время для напоминания – создать уведомление и показать его пользователю. - Определить время и дату, чтобы запланировать напоминание.
- Запланировать напоминания через
AlarmManager
. - Cоздать
PendingIntent
и добавить его к AlarmManager.
Шаги с 1 по 4 мы уже сделали. После того как пользователь создаст напоминание через UI интерфейс, который мы создали раннее, нам нужно будет передать эту информацию о напоминании в AlarmManager
Давайте рассмотрим, как это сделать.