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в качестве приёмника такого интента .
Следующий
Выводы