Course Content
-
Разработка приложения Фитнес-календарь
- Описание проекта
- Разработка графического интерфейса для отображения списка запланированных тренировок
- Создание уведомления Notification
- Создание PendingIntent
- Разработка интерфейса для создания напоминания о тренировке
- Создание локальной БД для хранения информации о тренировках
- Создание BroadcastReceiver
- Создание каналов уведомлений
- Доработка методов для отображения уведомлений
- Описание Alarm Manager
- Реализация механизма напоминания через AlarmManager
- Cоздание PendingIntent и добавление его к AlarmManager.
- Выводы
Cоздание PendingIntent и добавление его к AlarmManager.
Cоздание PendingIntent
и добавление его к AlarmManager.
Откройте AlarmScheduler.kt
в папке ru.androidschool.fitnessnotification.notification и определите внутри метод createPendingIntent():
private fun createPendingIntent(context: Context, reminderData: ReminderData, day: String?): PendingIntent? { // 1 create the intent using a unique type val intent = Intent(context.applicationContext, AlarmReceiver::class.java).apply { // 2 type = "$day-${reminderData.name}-${reminderData.type.name}" // 3 putExtra(KEY_ID, reminderData.id) } return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) }
Рассмотрим подробнее этот метод:
- Создаём
Intent
и указываемAlarmReceiver::class.java
в качетсве назначения - Установим тип – тип должен быть уникальным – и состоит из названия напоминания и типа тренировки. Если тип не будет уникальным то такой интент заменит другой
PendingIntent
с таким же типом. Более подробно как сравниваются интенты можно почитать в документации. - Добавляем ID объекта ReminderData в дополнительные параметры
Intent
чтобы потом использовать вAlarmReceiver
для получения данных о времени и дате тренировки. - Создаём
PendingIntent
используя методgetBroadcast()
. Это очень важно, так как мы создаёмIntent
сBroadcastReceiver
в качестве приёмника такого интента .
Следующий
Выводы