Sobes.tech
Middle

PendingIntent nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

PendingIntent, başka bir uygulamaya, uygulamanızın izinleriyle kodun bir bölümünü çalıştırma imkanı sağlayan bir jetondur.

Kullanım alanları:

  • Bildirimler (bildirime tıklandığında aktiviteyi başlatmak).
  • Masaüstü widget'ları (kullanıcı tıklamalarını işleme).
  • Planlayıcı servisleri (AlarmManager ile tekrarlayan görevler).

Normal Intent'ten temel farklar:

  • PendingIntent, başka bir uygulamaya iletilir.
  • PendingIntent, orijinal uygulamanın izinlerini korur.

PendingIntent türleri:

  • getActivity(): Bir Activity başlatmak için.
    // Activity başlatmak için PendingIntent oluşturma
    val intent = Intent(context, TargetActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    
  • getService(): Bir Service başlatmak için.
    // Service başlatmak için PendingIntent oluşturma
    val intent = Intent(context, MyService::class.java)
    val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
    
  • getBroadcast(): Yayın mesajı göndermek için.
    // Broadcast göndermek için PendingIntent oluşturma
    val intent = Intent("MY_ACTION")
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    

PendingIntent bayrakları davranışlarını etkiler:

Bayrak Açıklama
FLAG_ONE_SHOT PendingIntent sadece bir kez kullanılabilir.
FLAG_NO_CREATE Eğer PendingIntent yoksa, oluşturma, null döndür.
FLAG_CANCEL_CURRENT Aynı Intent ile bir PendingIntent zaten varsa, iptal et ve yenisini oluştur.
FLAG_UPDATE_CURRENT Aynı Intent ile bir PendingIntent zaten varsa, Extras'larını güncelle.
FLAG_IMMUTABLE PendingIntent başka uygulamalar tarafından değiştirilemez (önerilir).

PendingIntent kullanırken, onları ayırt etmek için benzersiz istek kodları (getActivity, getService, getBroadcast metodlarındaki ikinci argüman) belirtmek önemlidir.