Sobes.tech
Middle

Miks kasutatakse PendingIntenti tavalise Intenti asemel?

sobes.tech AI

Vastus AI-lt

PendingIntent võimaldab edastada kavatsuse (Intent) teisele rakendusele, et see saaks seda täita teie rakenduse nimel hiljem ja isegi siis, kui teie rakendus on lõpetatud.

Peamised põhjused kasutada PendingIntent:

  • Teated: tegevuse või teenuse käivitamine teatele klõpsates, isegi kui rakendus ei ole sel ajal aktiivne.
  • Töölaudwidgetid: tegevuse käivitamine rakenduses, suheldes widgetiga.
  • Äratused ja viivitusega ülesanded: rakenduskoodi täitmine määratud ajal või tingimuse korral, kasutades AlarmManager.
  • SMS-id ja muud levitajad: tegevuse täitmine rakenduses, kui saabub levitamise kavatsus.

Tavaline Intent täidetakse kohe ja teie rakenduse kontekstis. PendingIntent on Intent-i ümbris, mis annab teisele rakendusele loa täita seda Intent sama õigustega, nagu oleks seda teinud teie rakendus.

PendingIntenti loomisel tuleb valida käivitatava komponendi tüüp: tegevus (getActivity), teenus (getService) või levitaja (getBroadcast). Samuti määratakse lipud, mis määravad PendingIntent käitumise, näiteks kuidas töödelda olemasolevat kavatsust (FLAG_UPDATE_CURRENT, FLAG_CANCEL_CURRENT).

Näide PendingIntenti loomise kohta tegevuse käivitamiseks:

// Loome kavatsuse käivitada MainActivity
Intent intent = new Intent(context, MainActivity.class);
// Pakime kavatsuse PendingIntent'i
// requestCode kasutatakse pending intent'i identifitseerimiseks
// FLAG_UPDATE_CURRENT: kui selline pending intent juba eksisteerib, uuendame seda uute andmetega
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    0,
    intent,
    PendingIntent.FLAG_UPDATE_CURRENT
);