Sobes.tech
Middle

Ինչու է օգտագործվում PendingIntent՝ սովորական Intent-ի փոխարեն:

sobes.tech AI

Պատասխան AI-ից

PendingIntent հնարավորություն է տալիս փոխանցել միտում (Intent) մյուս ծրագրին, որպեսզի այն կարողանա այն կատարել ձեր ծրագրի անունից ավելի ուշ ժամանակում և նույնիսկ եթե ձեր ծրագիրը փակված է:

PendingIntent օգտագործելու հիմնական պատճառները՝

  • Ծանուցումներ: Գործունեության կամ ծառայության մեկնարկը ծանուցման վրա սեղմելու դեպքում, նույնիսկ եթե ծրագիրը այդ պահին ակտիվ չէ:
  • Վիդջեթներ աշխատասեղանին: Գործողության մեկնարկը ծրագրում վիդջեթի հետ փոխազդեցության ժամանակ:
  • Ժամացույցներ և հետաձգված առաջադրանքներ: Ծրագրի կոդի գործարկում որոշ ժամանակ կամ պայմանով AlarmManager-ի միջոցով:
  • SMS և այլ տարածման ընդունողներ: Գործողության իրականացում ծրագրում տարածման նպատակով ստանալուց հետո:

Նորմալ Intent-ը անմիջապես կատարվում է և ձեր ծրագրի կոնտեքստում: PendingIntent-ը, մյուս կողմից,, պատվածք է Intent-ի շուրջ, որը տալիս է մյուս ծրագրին թույլտվություն կատարել այդ Intent-ը նույն իրավունքներով, ինչպես եթե այն կատարեր ձեր ծրագիրը:

PendingIntent ստեղծելիս պետք է ընտրել այն կոմպոնենտի տիպը, որը կսկսվի՝ ակտիվություն (getActivity), ծառայություն (getService) կամ տարածման ընդունող (getBroadcast): Նաեւ նշվում են նշաններ, որոնք որոշում են PendingIntent-ի վարքագիծը, օրինակ, ինչպես կառավարել գոյություն ունեցող նպատակները (FLAG_UPDATE_CURRENT, FLAG_CANCEL_CURRENT):

Օրինակ՝ ակտիվություն սկսելու համար PendingIntent ստեղծելու համար:

// Ստեղծում ենք նպատակ՝ MainActivity սկսելու համար
Intent intent = new Intent(context, MainActivity.class);
// Նպատակը պատում ենք PendingIntent-ով
// requestCode- ն օգտագործվում է pending intent- ը նույնականացնելու համար
// FLAG_UPDATE_CURRENT- ը նշանակում է, եթե նման pending intent արդեն կա, այն թարմացնել
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    0,
    intent,
    PendingIntent.FLAG_UPDATE_CURRENT
);