Sobes.tech
Middle

Wat is PendingIntent?

sobes.tech AI

Antwoord van AI

Dit is een wrapper rond Intent, die de bevoegdheid doorgeeft aan een andere applicatie om die Intent in onze naam uit te voeren in de toekomst.

Belangrijkste kenmerken:

  • Uitgestelde uitvoering: Intent wordt niet meteen uitgevoerd, maar later door een andere component.
  • Rechten: De component aan wie PendingIntent wordt doorgegeven, krijgt dezelfde rechten als onze applicatie om deze Intent uit te voeren.
  • Uniciteit: Verschillende PendingIntent worden als gelijk beschouwd als ze hetzelfde type component, actie (action), gegevens (data), categorieën (categories) en vlaggen (flags) hebben.
  • Gebruik: Wordt vaak gebruikt voor meldingen, achtergrondtaken, widgets en AlarmManager.

De typen PendingIntent komen overeen met de typen doelcomponenten:

  • getActivity(Context context, int requestCode, Intent intent, int flags): start een Activity.
  • getBroadcast(Context context, int requestCode, Intent intent, int flags): verstuurt een broadcast.
  • getService(Context context, int requestCode, Intent intent, int flags): start of verbind met een Service.
  • getForegroundService(Context context, int requestCode, Intent intent, int flags): start een Foreground Service.
// Voorbeeld van het maken van PendingIntent voor meldingen
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    0, // requestCode, wordt gebruikt om PendingIntent te onderscheiden
    notificationIntent,
    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Vlaggen voor gedrag
);
// Deze pendingIntent kan nu worden doorgegeven, bijvoorbeeld aan een notificatie

Vlaggen (flags) beïnvloeden het gedrag bij het maken of bijwerken van een bestaande PendingIntent:

  • FLAG_ONE_SHOT: PendingIntent kan maar één keer worden gebruikt.
  • FLAG_NO_CREATE: Als PendingIntent niet bestaat, wordt het niet gemaakt, wordt null geretourneerd.
  • FLAG_CANCEL_CURRENT: Als er al een PendingIntent met dezelfde parameters bestaat, wordt deze geannuleerd en wordt een nieuwe gemaakt.
  • FLAG_UPDATE_CURRENT: Als er al een PendingIntent met dezelfde parameters bestaat, worden de extra gegevens bijgewerkt.
  • FLAG_IMMUTABLE (vereist vanaf S/API 31 in de meeste gevallen): Maakt een onveranderlijke PendingIntent.
  • FLAG_MUTABLE: Maakt een veranderlijke PendingIntent (voorzichtig gebruiken, kan kwetsbaar zijn).

Het kiezen van de juiste vlag is cruciaal voor correcte werking en veiligheid.