Middle
PendingIntent nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bu, Intent etrafında bir sarmaldır ve bu Intent'i gelecekte bizim adımıza başka bir uygulamanın yürütmesine yetki devreder.
Ana özellikler:
- Gecikmiş yürütme:
Intenthemen yürütülmez, daha sonra başka bir bileşen tarafından yapılır. - İzinler:
PendingIntent'e iletilen bileşen, buIntent'i yürütmek için bizim uygulamamızla aynı izinleri alır. - Benzersizlik: Farklı
PendingIntent'ler, bileşen tipi, eylem (action), veriler (data), kategoriler (categories) ve bayraklar (flags) eşleşiyorsa aynı kabul edilir. - Kullanım: Sıkça bildirimler, arka plan görevleri, widgetler ve AlarmManager için kullanılır.
PendingIntent türleri, hedef bileşen türlerine karşılık gelir:
getActivity(Context context, int requestCode, Intent intent, int flags): birActivitybaşlatır.getBroadcast(Context context, int requestCode, Intent intent, int flags): yayın gönderir.getService(Context context, int requestCode, Intent intent, int flags): birServicebaşlatır veya bağlanır.getForegroundService(Context context, int requestCode, Intent intent, int flags): birForeground Servicebaşlatır.
// Bildirimler için PendingIntent oluşturma örneği
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0, // requestCode, PendingIntent'i ayırt etmek için kullanılır
notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Davranışı yönetmek için bayraklar
);
// Artık bu pendingIntent, örneğin, Bildirim'e iletilebilir
flags (bayraklar), mevcut bir PendingIntent oluşturulurken veya güncellenirken davranışı etkiler:
FLAG_ONE_SHOT:PendingIntentyalnızca bir kez kullanılabilir.FLAG_NO_CREATE:PendingIntentmevcut değilse, oluşturulmaz,nulldöner.FLAG_CANCEL_CURRENT: Aynı parametrelerle zaten birPendingIntentvarsa, iptal edilir ve yenisi oluşturulur.FLAG_UPDATE_CURRENT: Aynı parametrelerle zaten birPendingIntentvarsa, ek verileri (Extra data) güncellenir.FLAG_IMMUTABLE(S/API 31'den itibaren çoğu durumda zorunludur): Değiştirilemez birPendingIntentoluşturur.FLAG_MUTABLE: Değiştirilebilir birPendingIntentoluşturur (dikkatli kullanın, güvenlik açığı olabilir).
Doğru bayrağı seçmek, doğru çalışma ve güvenlik için kritiktir.