Middle
Kas yra PendingIntent?
sobes.tech AI
Atsakymas iš AI
PendingIntent yra žetonas, kuris suteikia kitai programėlei galimybę vykdyti kodo dalį jūsų programėlės vardu su jūsų leidimais.
Jis naudojamas:
- pranešimams (aktyvumo paleidimas paspaudus ant pranešimo)
- darbalaukio valdikliams (vartotojo paspaudimų apdorojimas)
- planuotojų paslaugoms (pasikartojantys uždaviniai su AlarmManager)
Pagrindiniai skirtumai nuo įprasto Intent:
PendingIntentperduodamas kitai programėleiPendingIntentišsaugo pradinės programėlės leidimus
PendingIntent tipai:
getActivity(): aktyvumo paleidimui// `PendingIntent` sukūrimas aktyvumo paleidimui val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): paslaugos paleidimui// `PendingIntent` sukūrimas paslaugos paleidimui val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): transliuotojo žinutės siuntimui// `PendingIntent` sukūrimas transliuotojo žinutei siųsti val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
PendingIntent žymės veikia jų elgseną:
| Žymė | Aprašymas |
|---|---|
FLAG_ONE_SHOT |
PendingIntent galima naudoti tik vieną kartą. |
FLAG_NO_CREATE |
Jei PendingIntent neegzistuoja, nesukuriama, grąžinama null. |
FLAG_CANCEL_CURRENT |
Jei jau yra PendingIntent su tuo pačiu Intent, atšaukia jį ir sukuria naują. |
FLAG_UPDATE_CURRENT |
Jei jau yra PendingIntent su tuo pačiu Intent, atnaujina jo Extra. |
FLAG_IMMUTABLE |
PendingIntent negali būti keičiamas kitų programėlių (rekomenduojama). |
Naudojant PendingIntent, svarbu nurodyti unikalius užklausos kodus (antroji argumentas getActivity, getService, getBroadcast metodams), kad juos atskirtumėte.