Sobes.tech
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 մեթոդներում), որպեսզի տարբերակեք դրանք։