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(օգտագործել զգուշությամբ, կարող է լինել խոցելի):
Ընտրությունը ճիշտ նշանի համար կարևոր է ճիշտ աշխատանքի և անվտանգության համար։