พื้นหลัง:
ฉันใช้ PendingIntent สำหรับการเตือนผ่าน AlarmManager
ปัญหา:
ตอนแรกฉันคิดว่าในการยกเลิกอันก่อนหน้านี้ฉันต้องระบุ requestCode ที่แน่นอนที่ฉันเคยใช้มาก่อนเพื่อเริ่มการปลุก
แต่แล้วฉันก็พบว่าฉันคิดผิดตามที่API การยกเลิกบอก:
ลบสัญญาณเตือนใด ๆ ที่มีเจตนาที่ตรงกัน การเตือนภัยไม่ว่าประเภทใดก็ตามที่มี Intent ตรงกับการเตือนนี้ (ตามที่กำหนดโดย filterEquals (Intent)) จะถูกยกเลิก
ดูที่ " filterEquals " เอกสารระบุว่า:
ตรวจสอบว่าเจตนาสองอย่างเหมือนกันสำหรับวัตถุประสงค์ของการแก้ไขเจตนา (การกรอง) หรือไม่ นั่นคือถ้าการกระทำข้อมูลประเภทคลาสและหมวดหมู่เหมือนกัน ข้อมูลนี้ไม่ได้เปรียบเทียบข้อมูลเพิ่มเติมใด ๆ ที่รวมอยู่ใน Intent
เลยไม่เข้าใจว่า "requestCode" มีไว้เพื่ออะไร ...
คำถาม:
"requestCode" ใช้ทำอะไร
จะเกิดอะไรขึ้นถ้าฉันสร้างการเตือนภัยหลายรายการโดยใช้ "requestCode" เดียวกัน พวกเขาลบล้างกันและกัน?
If you truly need multiple distinct PendingIntent objects active at the same time (such as to use as two notifications that are both shown at the same time), then you will need to ensure there is something that is different about them to associate them with different PendingIntents. This may be any of the Intent attributes considered by Intent#filterEquals(Intent), or different request code integers supplied.