Middle
Ce este PendingIntent?
sobes.tech AI
Răspuns de la AI
PendingIntent reprezintă un token care oferă unei alte aplicații posibilitatea de a executa o parte din cod în numele aplicației dvs. cu permisiunile dvs.
Este utilizat pentru:
- Notificări (pornirea unei activități la clic pe notificare).
- Widget-uri desktop (procesarea clicurilor utilizatorului).
- Servicii de planificare (sarcini recurente cu AlarmManager).
Principalele diferențe față de un Intent obișnuit:
PendingIntenteste transmis către o altă aplicație.PendingIntentpăstrează permisiunile aplicației originale.
Tipuri de PendingIntent:
getActivity(): pentru a porni oActivity.// Crearea unui PendingIntent pentru a porni o Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): pentru a porni unService.// Crearea unui PendingIntent pentru a porni un Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): pentru a trimite un mesaj broadcast.// Crearea unui PendingIntent pentru a trimite un Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Flag-urile PendingIntent influențează comportamentul:
| Flag | Descriere |
|---|---|
FLAG_ONE_SHOT |
PendingIntent poate fi utilizat o singură dată. |
FLAG_NO_CREATE |
Dacă PendingIntent nu există, nu îl crea, returnează null. |
FLAG_CANCEL_CURRENT |
Dacă există deja un PendingIntent cu același Intent, îl anulează și creează unul nou. |
FLAG_UPDATE_CURRENT |
Dacă există deja un PendingIntent cu același Intent, actualizează Extras-urile sale. |
FLAG_IMMUTABLE |
PendingIntent nu poate fi modificat de alte aplicații (recomandat). |
Atunci când utilizați PendingIntent, este important să specificați coduri de solicitare unice (al doilea argument în metodele getActivity, getService, getBroadcast) pentru a le diferenția.