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), за да ги различавате.