Это обертка вокруг Intent, которая делегирует полномочия другому приложению выполнить этот Intent от нашего имени в будущем.
Ключевые особенности:
Intent выполняется не сразу, а позже, другим компонентом.PendingIntent, получает те же разрешения, что и наше приложение для выполнения данного Intent.PendingIntent считаются одинаковыми, если у них совпадают тип компонента, действие (action), данные (data), категории (categories) и флаги (flags).Типы PendingIntent соответствуют типам целевых компонентов:
getActivity(Context context, int requestCode, Intent intent, int flags): запускает Activity.getBroadcast(Context context, int requestCode, Intent intent, int flags): отправляет широковещательный сигнал.getService(Context context, int requestCode, Intent intent, int flags): запускает или привязывается к Service.getForegroundService(Context context, int requestCode, Intent intent, int flags): запускает Foreground Service.java
Флаги (flags) влияют на поведение при создании или обновлении существующего PendingIntent:
FLAG_ONE_SHOT: PendingIntent может быть использован только один раз.FLAG_NO_CREATE: Если PendingIntent не существует, он не создается, возвращается null.FLAG_CANCEL_CURRENT: Если PendingIntent с теми же параметрами уже существует, он отменяется, и создается новый.FLAG_UPDATE_CURRENT: Если PendingIntent с теми же параметрами уже существует, его дополнительные данные (Extra data) обновляются.FLAG_IMMUTABLE (начиная с S/API 31 обязательно для большинства случаев): Создает неизменяемый PendingIntent.FLAG_MUTABLE: Создает изменяемый PendingIntent (использовать с осторожностью, может быть уязвим).Выбор правильного флага критичен для корректной работы и безопасности.