Middle
Ինչ է PendingIntent-ը։
sobes.tech AI
Պատասխան AI-ից
PendingIntent-ը ներկայացնում է տոքեն, որը թույլ է տալիս մյուս հավելվածին կատարել կոդի մաս ձեր հավելվածի անունից ձեր թույլտվություններով:
Օգտագործվում է՝
- ծանուցումներ (ակտիվության մեկնարկ երբ սեղմում եք ծանուցման վրա)
- վիդջեթներ (օգտագործողի սեղմումները մշակելու համար)
- պլանավորող ծառայություններ (կրկնվող առաջադրանքներ AlarmManager-ով)
Հիմնական տարբերությունները սովորական Intent-ից՝
PendingIntentփոխանցվում է մյուս հավելվածինPendingIntentպահպանում է սկզբնական հավելվածի թույլտվությունները
PendingIntent-ի տեսակները՝
getActivity():Activityմեկնարկելու համար// PendingIntent ստեղծում Activity մեկնարկելու համար val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService():Serviceմեկնարկելու համար// PendingIntent ստեղծում Service մեկնարկելու համար val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): հեռարձակման հաղորդագրություն ուղարկելու համար// PendingIntent ստեղծում Broadcast ուղարկելու համար val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
PendingIntent-ի նշանները ազդում են նրա վարքագծի վրա՝
| նշան | նկարագրություն |
|---|---|
FLAG_ONE_SHOT |
PendingIntent-ը կարելի է օգտագործել միայն մեկ անգամ։ |
FLAG_NO_CREATE |
Եթե PendingIntent-ը գոյություն չունի, չստեղծել, վերադարձնել null։ |
FLAG_CANCEL_CURRENT |
Եթե նույն Intent-ով արդեն գոյություն ունի PendingIntent, չեղարկել և ստեղծել նոր։ |
FLAG_UPDATE_CURRENT |
Եթե նույն Intent-ով արդեն գոյություն ունի PendingIntent, թարմացնել նրա Extra-ները։ |
FLAG_IMMUTABLE |
PendingIntent-ը չի կարող փոխվել այլ հավելվածների կողմից (առաջարկվում է)։ |
Երբ օգտագործում եք PendingIntent, կարևոր է նշել յուրահատուկ կոդեր (երկրորդ արգումենտը getActivity, getService, getBroadcast մեթոդներում), որպեսզի տարբերակեք դրանք։