Sobes.tech
Middle

Kas yra PendingIntent?

sobes.tech AI

Atsakymas iš AI

PendingIntent yra žetonas, kuris suteikia kitai programėlei galimybę vykdyti kodo dalį jūsų programėlės vardu su jūsų leidimais.

Jis naudojamas:

  • pranešimams (aktyvumo paleidimas paspaudus ant pranešimo)
  • darbalaukio valdikliams (vartotojo paspaudimų apdorojimas)
  • planuotojų paslaugoms (pasikartojantys uždaviniai su AlarmManager)

Pagrindiniai skirtumai nuo įprasto Intent:

  • PendingIntent perduodamas kitai programėlei
  • PendingIntent išsaugo pradinės programėlės leidimus

PendingIntent tipai:

  • getActivity(): aktyvumo paleidimui
    // `PendingIntent` sukūrimas aktyvumo paleidimui
    val intent = Intent(context, TargetActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    
  • getService(): paslaugos paleidimui
    // `PendingIntent` sukūrimas paslaugos paleidimui
    val intent = Intent(context, MyService::class.java)
    val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
    
  • getBroadcast(): transliuotojo žinutės siuntimui
    // `PendingIntent` sukūrimas transliuotojo žinutei siųsti
    val intent = Intent("MY_ACTION")
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    

PendingIntent žymės veikia jų elgseną:

Žymė Aprašymas
FLAG_ONE_SHOT PendingIntent galima naudoti tik vieną kartą.
FLAG_NO_CREATE Jei PendingIntent neegzistuoja, nesukuriama, grąžinama null.
FLAG_CANCEL_CURRENT Jei jau yra PendingIntent su tuo pačiu Intent, atšaukia jį ir sukuria naują.
FLAG_UPDATE_CURRENT Jei jau yra PendingIntent su tuo pačiu Intent, atnaujina jo Extra.
FLAG_IMMUTABLE PendingIntent negali būti keičiamas kitų programėlių (rekomenduojama).

Naudojant PendingIntent, svarbu nurodyti unikalius užklausos kodus (antroji argumentas getActivity, getService, getBroadcast metodams), kad juos atskirtumėte.