Zašto se koristi PendingIntent umesto običnog Intent-a?
sobes.tech АИ
Одговор од АИ
PendingIntent omogućava prenos namere (Intent) drugoj aplikaciji, tako da ona može da je izvrši u ime vaše aplikacije u kasnije vreme, čak i ako je vaša aplikacija zatvorena.
Glavni razlozi za korišćenje PendingIntent:
- Obaveštenja: Pokretanje aktivnosti ili servisa klikom na obaveštenje, čak i ako aplikacija u tom trenutku nije aktivna.
- Widgeti na radnoj površini: Pokretanje akcije u aplikaciji pri interakciji sa widgetom.
- Budilnici i odloženi zadaci: Izvršavanje koda aplikacije u određeno vreme ili prema uslovu pomoću
AlarmManager. - SMS i drugi primaoci emitovanja: Izvršavanje akcije u aplikaciji pri primanju emitovanog namere.
Običan Intent se izvršava odmah i u kontekstu vaše aplikacije. PendingIntent, s druge strane, je omotač oko Intent koji daje drugoj aplikaciji dozvolu da izvrši taj Intent sa istim pravima kao da ga izvršava vaša aplikacija.
Prilikom kreiranja PendingIntent, potrebno je odabrati tip komponente koja će biti pokrenuta: aktivnost (getActivity), servis (getService) ili emitovač (getBroadcast). Takođe se specificiraju zastavice koje određuju ponašanje PendingIntent, na primer, kako da se obrađuju postojeći intenti (FLAG_UPDATE_CURRENT, FLAG_CANCEL_CURRENT).
Primer kreiranja PendingIntent za pokretanje aktivnosti:
// Kreiramo intent za pokretanje MainActivity
Intent intent = new Intent(context, MainActivity.class);
// Uokvirujemo intent u PendingIntent
// requestCode se koristi za identifikaciju pending intent-a
// FLAG_UPDATE_CURRENT: ako već postoji takav pending intent, ažurirajte ga
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
);