Sobes.tech
Middle

Ի՞նչ է PendingIntent-ը։

sobes.tech AI

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

Սա Intent-ի շուրջ պատյան է, որը փոխանցում է լիազորություններ այլ հավելվածին՝ կատարել այս Intent-ը մեր անունից ապագայում:

Հիմնական առանձնահատկություններ՝

  • Հետաձգված կատարման: Intent-ը կատարվում է ոչ անմիջապես, այլ ավելի ուշ՝ այլ կոմպոնենտի կողմից:
  • Լիցենզիաներ: PendingIntent-ին փոխանցվող կոմպոնենտը ստանում է նույն թույլտվությունները, ինչ մեր հավելվածը՝ այս Intent-ը կատարելու համար:
  • Անհատականություն: Տարբեր PendingIntent-ները համարվում են նույնը, եթե ունեն նույն կոմպոնենտի տեսակ, գործողություն (action), տվյալներ (data), կատեգորիաներ (categories) և նշաններ (flags):
  • Օգտագործում: Հաճախ օգտագործվում է ծանուցումների, ֆոնային առաջադրանքների, վիդջեթների և AlarmManager-ի համար:

PendingIntent-ների տեսակները համապատասխան են նպատակային կոմպոնենտների տեսակներին:

  • getActivity(Context context, int requestCode, Intent intent, int flags): գործարկում է Activity:
  • getBroadcast(Context context, int requestCode, Intent intent, int flags): ուղարկում է բաշխիչ ազդանշան:
  • getService(Context context, int requestCode, Intent intent, int flags): գործարկում կամ միանում է Service-ին:
  • getForegroundService(Context context, int requestCode, Intent intent, int flags): գործարկում է Foreground Service:
// Օրինակ՝ PendingIntent ստեղծելու համար ծանուցումների համար
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    0, // requestCode, օգտագործվում է տարբերելու համար PendingIntent-ները
    notificationIntent,
    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // նշաններ՝ վարքագծի կառավարման համար
);
// Այժմ այս pendingIntent-ը կարող է փոխանցվել, օրինակ, Notification-ին

Նշանները (flags) ազդում են ստեղծման կամ արդիականացման ժամանակ գործողության վրա՝

  • FLAG_ONE_SHOT: PendingIntent-ը կարող է օգտագործվել միայն մեկ անգամ:
  • FLAG_NO_CREATE: Եթե PendingIntent-ը գոյություն չունի, այն չի ստեղծվի, վերադարձվում է null:
  • FLAG_CANCEL_CURRENT: Եթե արդեն գոյություն ունի նույն պարամետրերով PendingIntent, այն չեղյալ է հայտարարվում և նոր է ստեղծվում:
  • FLAG_UPDATE_CURRENT: Եթե արդեն գոյություն ունի նույն պարամետրերով PendingIntent, նրա լրացուցիչ տվյալները (Extra data) թարմացվում են:
  • FLAG_IMMUTABLE (սկսած S/API 31 պարտադիր է մեծամասնության դեպքերում): Ստեղծում է անփոփոխ PendingIntent:
  • FLAG_MUTABLE: Ստեղծում է փոփոխական PendingIntent (օգտագործել զգուշությամբ, կարող է լինել խոցելի):

Ընտրությունը ճիշտ նշանի համար կարևոր է ճիշտ աշխատանքի և անվտանգության համար։