Sobes.tech
Middle

Mi az a PendingIntent?

sobes.tech MI

Válasz az MI-től

Ez egy burkolat a Intent körül, amely felhatalmazást ad egy másik alkalmazásnak arra, hogy a nevünkben végrehajtsa ezt a Intent-et a jövőben.

Fő jellemzők:

  • Elhalasztott végrehajtás: A Intent nem azonnal kerül végrehajtásra, hanem később, egy másik komponens által.
  • Engedélyek: A komponens, amelyhez a PendingIntent kerül, ugyanazokat az engedélyeket kapja, mint a mi alkalmazásunk, hogy végrehajtsa ezt a Intent-et.
  • Egyediség: Különböző PendingIntent-ek ugyanolyannak számítanak, ha megegyeznek a komponens típusa, az akció (action), az adatok (data), a kategóriák (categories) és a zászlók (flags).
  • Használat: Gyakran használják értesítésekhez, háttérfeladatokhoz, widgetekhez és AlarmManagerhez.

A PendingIntent típusok megfelelnek a célkomponensek típusainak:

  • getActivity(Context context, int requestCode, Intent intent, int flags): indít egy Activity-t.
  • getBroadcast(Context context, int requestCode, Intent intent, int flags): broadcastot küld.
  • getService(Context context, int requestCode, Intent intent, int flags): indít vagy csatlakozik egy Service-hez.
  • getForegroundService(Context context, int requestCode, Intent intent, int flags): indít egy Foreground Service-t.
// Példa PendingIntent létrehozására értesítésekhez
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    0, // requestCode, a PendingIntent megkülönböztetésére szolgál
    notificationIntent,
    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Zászlók a viselkedés kezeléséhez
);
// Most ezt a pendingIntent-et át lehet adni, például, egy értesítéshez

A zászlók (flags) befolyásolják a viselkedést, amikor meglévő PendingIntent-et hozunk létre vagy frissítünk:

  • FLAG_ONE_SHOT: A PendingIntent csak egyszer használható.
  • FLAG_NO_CREATE: Ha a PendingIntent nem létezik, nem hozza létre, null-t ad vissza.
  • FLAG_CANCEL_CURRENT: Ha már létezik egy ugyanolyan paraméterekkel rendelkező PendingIntent, akkor törli, és újat hoz létre.
  • FLAG_UPDATE_CURRENT: Ha már létezik egy ugyanolyan paraméterekkel rendelkező PendingIntent, akkor frissíti a kiegészítő adatokat.
  • FLAG_IMMUTABLE (kötelező S/API 31-től a legtöbb esetben): Létrehoz egy változatlan PendingIntent-et.
  • FLAG_MUTABLE: Létrehoz egy változtatható PendingIntent-et (óvatosan, sérülékeny lehet).

A megfelelő zászló kiválasztása kritikus a helyes működéshez és biztonsághoz.