Sobes.tech
Middle

Kas ir PendingIntent?

sobes.tech AI

Atbilde no AI

PendingIntent ir reprezentēts kā tokens, kas dod citai lietojumprogrammai iespēju izpildīt koda daļu jūsu lietojumprogrammas vārdā ar jūsu atļaujām.

Tas tiek izmantots:

  • paziņojumiem (aktivitātes palaišana, nospiežot uz paziņojuma)
  • galddatora logrīkiem (lietošanas lietotāja klikšķu apstrāde)
  • plānotāju pakalpojumiem (atkārtotas uzdevumi ar AlarmManager)

Galvenās atšķirības no parasta Intent:

  • PendingIntent tiek nodots citai lietojumprogrammai
  • PendingIntent saglabā sākotnējās lietojumprogrammas atļaujas

PendingIntent veidi:

  • getActivity(): aktivtātes palaišanai
    // `PendingIntent` izveide aktivtātes palaišanai
    val intent = Intent(context, TargetActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    
  • getService(): pakalpojuma palaišanai
    // `PendingIntent` izveide pakalpojuma palaišanai
    val intent = Intent(context, MyService::class.java)
    val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
    
  • getBroadcast(): plašsaziņas līdzekļu ziņojuma sūtīšanai
    // `PendingIntent` izveide plašsaziņas līdzekļu ziņojuma sūtīšanai
    val intent = Intent("MY_ACTION")
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    

PendingIntent zīmes ietekmē to uzvedību:

Zīme Apraksts
FLAG_ONE_SHOT PendingIntent var izmantot tikai vienu reizi.
FLAG_NO_CREATE Ja PendingIntent nepastāv, to neizveido, atgriež null.
FLAG_CANCEL_CURRENT Ja jau pastāv PendingIntent ar to pašu Intent, to dzēš un izveido jaunu.
FLAG_UPDATE_CURRENT Ja jau pastāv PendingIntent ar to pašu Intent, atjaunina tā Extra.
FLAG_IMMUTABLE PendingIntent nevar tikt mainīts ar citām lietojumprogrammām (ieteicams).

Lietojot PendingIntent, ir svarīgi norādīt unikālus pieprasījuma kodus (otrais arguments getActivity, getService, getBroadcast metodēs), lai tos atšķirtu.