Sobes.tech
Middle

Mis on PendingIntent?

sobes.tech AI

Vastus AI-lt

PendingIntent on märk, mis võimaldab teisel rakendusel täita osa teie rakenduse koodist teie luba kasutades.

Seda kasutatakse:

  • teavitustes (aktiivsuse käivitamine teavitusele klõpsates)
  • töölaua vidinates (kasutaja klõpsude töötlemine)
  • plaanimisteenustes (korduvad ülesanded AlarmManageriga)

Peamised erinevused tavalise Intent-iga:

  • PendingIntent edastatakse teisele rakendusele
  • PendingIntent säilitab algse rakenduse load

PendingIntent tüübid:

  • getActivity(): tegevuse käivitamiseks
    // PendingIntent loomine tegevuse käivitamiseks
    val intent = Intent(context, TargetActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    
  • getService(): teenuse käivitamiseks
    // PendingIntent loomine teenuse käivitamiseks
    val intent = Intent(context, MyService::class.java)
    val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
    
  • getBroadcast(): levitussõnumi saatmiseks
    // PendingIntent loomine levitussõnumi saatmiseks
    val intent = Intent("MY_ACTION")
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    

PendingIntent lipud mõjutavad selle käitumist:

Lipp Kirjeldus
FLAG_ONE_SHOT PendingIntent saab kasutada ainult üks kord.
FLAG_NO_CREATE Kui PendingIntent ei eksisteeri, ära loo seda, tagasta null.
FLAG_CANCEL_CURRENT Kui sama Intent-iga juba olemas PendingIntent, tühista see ja loo uus.
FLAG_UPDATE_CURRENT Kui sama Intent-iga juba olemas PendingIntent, uuenda selle Extra.
FLAG_IMMUTABLE PendingIntent ei saa olla muudetud teiste rakenduste poolt (soovitatav).

PendingIntent kasutamisel on oluline märkida unikaalsed päringukoodid (teine argument meetodites getActivity, getService, getBroadcast), et neid eristada.