Middle
Kas ir PendingIntent?
sobes.tech AI
Atbilde no AI
PendingIntent ir reprezentēts kā tokens, kas dod citai lietojumprogrammai iespēju izpildīt koda daļu jūsu lietojumprogrammas vārdā ar jūsu atļaujām.
Tas tiek izmantots:
- paziņojumiem (aktivitātes palaišana, nospiežot uz paziņojuma)
- galddatora logrīkiem (lietošanas lietotāja klikšķu apstrāde)
- plānotāju pakalpojumiem (atkārtotas uzdevumi ar AlarmManager)
Galvenās atšķirības no parasta Intent:
PendingIntenttiek nodots citai lietojumprogrammaiPendingIntentsaglabā sākotnējās lietojumprogrammas atļaujas
PendingIntent veidi:
getActivity(): aktivtātes palaišanai// `PendingIntent` izveide aktivtātes palaišanai val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): pakalpojuma palaišanai// `PendingIntent` izveide pakalpojuma palaišanai val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): plašsaziņas līdzekļu ziņojuma sūtīšanai// `PendingIntent` izveide plašsaziņas līdzekļu ziņojuma sūtīšanai val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
PendingIntent zīmes ietekmē to uzvedību:
| Zīme | Apraksts |
|---|---|
FLAG_ONE_SHOT |
PendingIntent var izmantot tikai vienu reizi. |
FLAG_NO_CREATE |
Ja PendingIntent nepastāv, to neizveido, atgriež null. |
FLAG_CANCEL_CURRENT |
Ja jau pastāv PendingIntent ar to pašu Intent, to dzēš un izveido jaunu. |
FLAG_UPDATE_CURRENT |
Ja jau pastāv PendingIntent ar to pašu Intent, atjaunina tā Extra. |
FLAG_IMMUTABLE |
PendingIntent nevar tikt mainīts ar citām lietojumprogrammām (ieteicams). |
Lietojot PendingIntent, ir svarīgi norādīt unikālus pieprasījuma kodus (otrais arguments getActivity, getService, getBroadcast metodēs), lai tos atšķirtu.