Sobes.tech
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: Intent täidetakse mitte kohe, vaid hiljem, teise komponendi poolt.
  • Luba: PendingIntent-ile üleantud komponent saab samad load nagu meie rakendus selle Intent tä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äivitab Activity.
  • getBroadcast(Context context, int requestCode, Intent intent, int flags): saadab levitussignaali.
  • getService(Context context, int requestCode, Intent intent, int flags): käivitab või ühendub Service-ga.
  • getForegroundService(Context context, int requestCode, Intent intent, int flags): käivitab Foreground 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: Kui PendingIntent-i ei eksisteeri, see ei loo uut, tagastatakse null.
  • FLAG_CANCEL_CURRENT: Kui juba on olemas PendingIntent sama parameetritega, see tühistatakse ja luuakse uus.
  • FLAG_UPDATE_CURRENT: Kui juba on olemas PendingIntent sama parameetritega, uuendatakse selle lisandunud andmeid (Extra data).
  • FLAG_IMMUTABLE (alates S/API 31 kohustuslik enamikul juhtudel): Loob muutumatu PendingIntent-i.
  • FLAG_MUTABLE: Loob muudetava PendingIntent-i (kasutada ettevaatusega, võib olla haavatav).

Õige lipu valimine on kriitiline õige töö ja turvalisuse jaoks.