Sobes.tech
Middle

Mi az a PendingIntent?

sobes.tech MI

Válasz az MI-től

A PendingIntent egy token, amely lehetővé teszi egy másik alkalmazás számára, hogy a saját alkalmazásának nevében a kód egy részét végrehajtsa az Ön engedélyeivel.

Ezt a következőkhez használják:

  • Értesítések (aktivítás indítása az értesítésre kattintva).
  • Asztali widgetek (felhasználói kattintások kezelése).
  • Ütemező szolgáltatások (ismétlődő feladatok az AlarmManager-rel).

Fő különbségek a szokásos Intent-hez képest:

  • A PendingIntent más alkalmazásnak kerül átadásra.
  • A PendingIntent megőrzi az eredeti alkalmazás engedélyeit.

A PendingIntent típusai:

  • getActivity(): egy Activity indítására.
    // PendingIntent létrehozása Activity indításához
    val intent = Intent(context, TargetActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    
  • getService(): egy Service indítására.
    // PendingIntent létrehozása Service indításához
    val intent = Intent(context, MyService::class.java)
    val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
    
  • getBroadcast(): egy broadcast üzenet küldésére.
    // PendingIntent létrehozása broadcast küldéséhez
    val intent = Intent("MY_ACTION")
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    

A PendingIntent zászlói befolyásolják a viselkedést:

Zászló Leírás
FLAG_ONE_SHOT A PendingIntent csak egyszer használható.
FLAG_NO_CREATE Ha a PendingIntent nem létezik, ne hozd létre, térjen vissza null-lal.
FLAG_CANCEL_CURRENT Ha már létezik egy ugyanolyan Intenttel rendelkező PendingIntent, töröld és hozz létre újat.
FLAG_UPDATE_CURRENT Ha már létezik egy ugyanolyan Intenttel rendelkező PendingIntent, frissítse az Extra adatait.
FLAG_IMMUTABLE A PendingIntent nem módosítható más alkalmazások által (ajánlott).

A PendingIntent használatakor fontos, hogy egyedi kéréskódokat adj meg (a második argumentum a getActivity, getService, getBroadcast metódusokban), hogy megkülönböztesd őket.