Middle
Mi az a PendingIntent?
sobes.tech MI
Válasz az MI-től
A PendingIntent egy token, amely lehetővé teszi egy másik alkalmazás számára, hogy a saját alkalmazásának nevében a kód egy részét végrehajtsa az Ön engedélyeivel.
Ezt a következőkhez használják:
- Értesítések (aktivítás indítása az értesítésre kattintva).
- Asztali widgetek (felhasználói kattintások kezelése).
- Ütemező szolgáltatások (ismétlődő feladatok az AlarmManager-rel).
Fő különbségek a szokásos Intent-hez képest:
- A
PendingIntentmás alkalmazásnak kerül átadásra. - A
PendingIntentmegőrzi az eredeti alkalmazás engedélyeit.
A PendingIntent típusai:
getActivity(): egyActivityindítására.// PendingIntent létrehozása Activity indításához val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): egyServiceindítására.// PendingIntent létrehozása Service indításához val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): egy broadcast üzenet küldésére.// PendingIntent létrehozása broadcast küldéséhez val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
A PendingIntent zászlói befolyásolják a viselkedést:
| Zászló | Leírás |
|---|---|
FLAG_ONE_SHOT |
A PendingIntent csak egyszer használható. |
FLAG_NO_CREATE |
Ha a PendingIntent nem létezik, ne hozd létre, térjen vissza null-lal. |
FLAG_CANCEL_CURRENT |
Ha már létezik egy ugyanolyan Intenttel rendelkező PendingIntent, töröld és hozz létre újat. |
FLAG_UPDATE_CURRENT |
Ha már létezik egy ugyanolyan Intenttel rendelkező PendingIntent, frissítse az Extra adatait. |
FLAG_IMMUTABLE |
A PendingIntent nem módosítható más alkalmazások által (ajánlott). |
A PendingIntent használatakor fontos, hogy egyedi kéréskódokat adj meg (a második argumentum a getActivity, getService, getBroadcast metódusokban), hogy megkülönböztesd őket.