Middle
რა არის PendingIntent?
sobes.tech AI
პასუხი AI-სგან
PendingIntent — это токен, который предоставляет другому приложению возможность выполнить часть кода от имени вашего приложения с вашими разрешениями.
Он используется для:
- уведомлений (запуск активности при нажатии на уведомление)
- виджетов рабочего стола (обработка нажатий пользователя)
- служб планировщика (повторяющиеся задачи с AlarmManager)
Основные отличия от обычного Intent:
PendingIntentпередается другому приложениюPendingIntentсохраняет разрешения исходного приложения
Типы PendingIntent:
getActivity(): для запускаActivity// Создание PendingIntent для запуска Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): для запускаService// Создание PendingIntent для запуска Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): для отправки широковещательного сообщения// Создание PendingIntent для отправки Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Флаги PendingIntent влияют на поведение:
| Флаг | Описание |
|---|---|
FLAG_ONE_SHOT |
PendingIntent можно использовать только один раз. |
FLAG_NO_CREATE |
Если PendingIntent не существует, не создавать его, вернуть null. |
FLAG_CANCEL_CURRENT |
Если PendingIntent с тем же Intent уже существует, отменить его и создать новый. |
FLAG_UPDATE_CURRENT |
Если PendingIntent с тем же Intent уже существует, обновить его Extra. |
FLAG_IMMUTABLE |
PendingIntent не может быть изменен другими приложениями (рекомендуется). |
При использовании PendingIntent важно указывать уникальные коды запроса (второй аргумент в методах getActivity, getService, getBroadcast), чтобы различать их.