Sobes.tech
Middle

Kas ir PendingIntent?

sobes.tech AI

Atbilde no AI

Tas ir apvalks ap Intent, kuris delegē pilnvaras citai lietojumprogrammai izpildīt šo Intent mūsu vārdā nākotnē.

Galvenās īpašības:

  • Aizkavēta izpilde: Intent netiek izpildīts uzreiz, bet vēlāk, ar cita komponenta starpniecību.
  • Atļaujas: Komponents, kam tiek nodots PendingIntent, saņem tās pašas atļaujas kā mūsu lietojumprogramma šī Intent izpildei.
  • Unikalitāte: Atšķirīgi PendingIntent tiek uzskatīti par vienādiem, ja tiem sakrīt komponenta tips, darbība (action), dati (data), kategorijas (categories) un karogi (flags).
  • Izmantošana: Bieži tiek izmantots paziņojumiem, fonu uzdevumiem, viedtālruņu logrīkiem un AlarmManager.

PendingIntent tipi atbilst mērķa komponentu tipiem:

  • getActivity(Context context, int requestCode, Intent intent, int flags): uzsāk Activity.
  • getBroadcast(Context context, int requestCode, Intent intent, int flags): nosūta plašsaziņas signālu.
  • getService(Context context, int requestCode, Intent intent, int flags): uzsāk vai pieslēdzas Service.
  • getForegroundService(Context context, int requestCode, Intent intent, int flags): uzsāk Foreground Service.
// Piemērs, kā izveidot PendingIntent paziņojumiem
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    0, // requestCode, izmanto, lai atšķirtu PendingIntent
    notificationIntent,
    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Karogi pārvaldībai
);
// Tagad šo pendingIntent var nodot, piemēram, Notification

Karogi (flags) ietekmē uzvedību, izveidojot vai atjauninot esošo PendingIntent:

  • FLAG_ONE_SHOT: PendingIntent var tikt izmantots tikai vienu reizi.
  • FLAG_NO_CREATE: Ja PendingIntent neeksistē, tas netiks izveidots, tiks atgriezts null.
  • FLAG_CANCEL_CURRENT: Ja jau pastāv PendingIntent ar tiem pašiem parametriem, tas tiek anulēts un tiek izveidots jauns.
  • FLAG_UPDATE_CURRENT: Ja jau pastāv PendingIntent ar tiem pašiem parametriem, tā papildu dati (Extra data) tiek atjaunināti.
  • FLAG_IMMUTABLE (no S/API 31 obligāti lielākajā daļā gadījumu): Izveido nemaināmu PendingIntent.
  • FLAG_MUTABLE: Izveido maināmu PendingIntent (lietot ar piesardzību, var būt neaizsargāts).

Pareiza karoga izvēle ir kritiska pareizai darbībai un drošībai.