Sobes.tech
Middle

PendingIntent nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Bu, Intent ətrafında bir çərçivədir və bu, səlahiyyəti başqa bir tətbiqə verir ki, bu Intent-i gələcəkdə bizim adımızdan icra etsin.

Əsas xüsusiyyətlər:

  • Gecikmiş icra: Intent dərhal icra edilmir, əvəzinə daha sonra başqa bir komponent tərəfindən icra olunur.
  • İcazələr: PendingIntent-ə ötürülən komponent, bu Intent-i icra etmək üçün bizim tətbiqimizlə eyni icazələri alır.
  • Unikalıq: Fərqli PendingIntent-lər, komponent növü, hərəkət (action), məlumatlar (data), kateqoriyalar (categories) və bayraqlar (flags) eyni olduqda, eyni hesab edilir.
  • İstifadə: Çox vaxt bildirişlər, fon tapşırıqları, widgetlər və AlarmManager üçün istifadə olunur.

PendingIntent növləri, hədəf komponent növlərinə uyğun gəlir:

  • getActivity(Context context, int requestCode, Intent intent, int flags): Activity-ni işə salır.
  • getBroadcast(Context context, int requestCode, Intent intent, int flags): yayım siqnalı göndərir.
  • getService(Context context, int requestCode, Intent intent, int flags): Service-i işə salır və ya ona qoşulur.
  • getForegroundService(Context context, int requestCode, Intent intent, int flags): Foreground Service-ni işə salır.
// Bildirişlər üçün PendingIntent nümunəsi
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    0, // requestCode, PendingIntent-i ayırmaq üçün istifadə olunur
    notificationIntent,
    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Davranışı idarə etmək üçün bayraqlar
);
// İndi bu pendingIntent, məsələn, Notification-ə ötürülə bilər

flags (bayraqlar), mövcud PendingIntent-in yaradılması və ya yenilənməsi zamanı davranışa təsir edir:

  • FLAG_ONE_SHOT: PendingIntent yalnız bir dəfə istifadə edilə bilər.
  • FLAG_NO_CREATE: Əgər PendingIntent mövcud deyilsə, yaradılmır, null qaytarılır.
  • FLAG_CANCEL_CURRENT: Əgər eyni parametrlərlə artıq PendingIntent mövcuddursa, o ləğv edilir və yenisi yaradılır.
  • FLAG_UPDATE_CURRENT: Əgər eyni parametrlərlə artıq PendingIntent mövcuddursa, onun əlavə məlumatları (Extra data) yenilənir.
  • FLAG_IMMUTABLE (S/API 31-dən etibarən əksər hallarda vacibdir): Dəyişməz PendingIntent yaradır.
  • FLAG_MUTABLE: Dəyişkən PendingIntent yaradır (diqqətli olun, zəif ola bilər).

Düzgün bayrağı seçmək düzgün işləmə və təhlükəsizlik üçün çox vacibdir.