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 მეთოდებში), რათა განასხვავოთ ისინი.