Middle
Mis on PendingIntent?
sobes.tech AI
Vastus AI-lt
See on ümbris Intent ümber, mis annab volitused teisele rakendusele selle Intent täitmiseks meie nimel tulevikus.
Peamised omadused:
- Viivitusega täitmine:
Intenttäidetakse mitte kohe, vaid hiljem, teise komponendi poolt. - Luba:
PendingIntent-ile üleantud komponent saab samad load nagu meie rakendus selleIntenttäitmiseks. - Unikaalsus: Erinevad
PendingIntent-id loetakse samadeks, kui neil on sama komponendi tüüp, tegevus (action), andmed (data), kategooriad (categories) ja lipud (flags). - Kasutus: Sageli kasutatakse teavituste, taustategevuste, vidinate ja AlarmManageri jaoks.
PendingIntent-i tüübid vastavad sihtkomponentide tüüpidele:
getActivity(Context context, int requestCode, Intent intent, int flags): käivitabActivity.getBroadcast(Context context, int requestCode, Intent intent, int flags): saadab levitussignaali.getService(Context context, int requestCode, Intent intent, int flags): käivitab või ühendubService-ga.getForegroundService(Context context, int requestCode, Intent intent, int flags): käivitabForeground Service-i.
// Näide PendingIntent-i loomise kohta teavituste jaoks
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0, // requestCode, kasutatakse PendingIntent-ide eristamiseks
notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Lipud käitumise juhtimiseks
);
// Nüüd saab seda pendingIntent-i edastada, näiteks, Notification-ile
Lipud (flags) mõjutavad käitumist olemasoleva PendingIntent loomisel või uuendamisel:
FLAG_ONE_SHOT:PendingIntent-i saab kasutada ainult üks kord.FLAG_NO_CREATE: KuiPendingIntent-i ei eksisteeri, see ei loo uut, tagastataksenull.FLAG_CANCEL_CURRENT: Kui juba on olemasPendingIntentsama parameetritega, see tühistatakse ja luuakse uus.FLAG_UPDATE_CURRENT: Kui juba on olemasPendingIntentsama parameetritega, uuendatakse selle lisandunud andmeid (Extra data).FLAG_IMMUTABLE(alates S/API 31 kohustuslik enamikul juhtudel): Loob muutumatuPendingIntent-i.FLAG_MUTABLE: Loob muudetavaPendingIntent-i (kasutada ettevaatusega, võib olla haavatav).
Õige lipu valimine on kriitiline õige töö ja turvalisuse jaoks.