อะไรคือความแตกต่างระหว่างsendStickyBroadcast
และsendBroadcast
ใน Android?
อะไรคือความแตกต่างระหว่างsendStickyBroadcast
และsendBroadcast
ใน Android?
คำตอบ:
นี่คือสิ่งที่ Android SDK พูดเกี่ยวกับsendStickyBroadcast()
:
ดำเนินการ sendBroadcast (Intent) ที่ "ติดหนึบ" ซึ่งหมายความว่า Intent ที่คุณกำลังส่งจะยังคงอยู่หลังจากการออกอากาศเสร็จสมบูรณ์เพื่อให้ผู้อื่นสามารถดึงข้อมูลนั้นได้อย่างรวดเร็วผ่านค่าที่ส่งคืนของ registerReceiver (BroadcastReceiver, IntentFilter) ในวิธีอื่น ๆ ทั้งหมดนี้จะทำงานเหมือนกับ sendBroadcast (Intent)
ACTION_BATTERY_CHANGED
ตัวอย่างหนึ่งของการถ่ายทอดเหนียวส่งผ่านทางระบบปฏิบัติการ เมื่อคุณเรียกร้องregisterReceiver()
ให้ดำเนินการนั้นแม้จะมีnull
BroadcastReceiver
- คุณจะได้รับการIntent
ถ่ายทอดครั้งสุดท้ายสำหรับการกระทำนั้น ดังนั้นคุณสามารถใช้สิ่งนี้เพื่อค้นหาสถานะของแบตเตอรี่โดยไม่จำเป็นต้องลงทะเบียนสำหรับการเปลี่ยนแปลงสถานะในอนาคตทั้งหมดของแบตเตอรี่
ประเภท : - ท้องถิ่นปกติสั่งและเหนียว
ออกอากาศปกติ
: - ใช้ sendBroadcast ()
: - ออกอากาศแบบอะซิงโครนัส
: - เครื่องรับใดก็ได้รับการออกอากาศไม่ใช่คำสั่งใด ๆ
สั่งออกอากาศ
: - ใช้ sendOrderBroadcast ()
: - ออกอากาศแบบซิงโครนัส
: - เครื่องรับสัญญาณรับการออกอากาศในฐานลำดับความสำคัญ
: - เราสามารถยกเลิกการออกอากาศในประเภทนี้ได้
ออกอากาศท้องถิ่น
: - ใช้เฉพาะเมื่อมีการใช้การออกอากาศภายในกระบวนการเดียวกันเท่านั้น
Sticky Broadcast
: - ความตั้งใจในการออกอากาศปกติจะไม่สามารถใช้งานได้อีกต่อไปหลังจากนี้ระบบจะส่งและประมวลผล
: - ใช้ sendStickyBroadcast (Intent)
: - เจตนาที่ตรงกันนั้นเหนียวหมายความว่าเจตนาที่คุณส่งจะยังคงอยู่หลังจากการออกอากาศเสร็จสิ้น
: - เนื่องจากสิ่งนี้คนอื่น ๆ สามารถดึงข้อมูลนั้นได้อย่างรวดเร็วผ่านค่าส่งคืนของ registerReceiver (BroadcastReceiver, IntentFilter)
: - นอกเหนือจากนี้เหมือนกับ sendBroadcast (Intent)
sendbroadcast()
- ออกอากาศปกติ แต่เราสามารถกำหนดลำดับความสำคัญได้เช่นกัน
sendstickybroadcast()
- ความตั้งใจที่ส่งมาพร้อมกับสิ่งนี้จะติดสำหรับผู้ใช้ในอนาคตที่ลงทะเบียนผ่านรหัส (ตัวรับแบบไดนามิก) การออกอากาศที่จะติดกับ Android และจะถูกส่งซ้ำหรือออกอากาศซ้ำตามคำขอในอนาคตจากเครื่องรับการออกอากาศใด ๆ
เมื่อมีคนส่งการออกอากาศแบบติดหนึบโดยใช้การออกอากาศsendstickyBroadcast(intent);
นั้นจะพร้อมใช้งานสำหรับผู้ใช้ในอนาคตที่ใช้ตัวรับแบบไดนามิก
แต่ตอนนี้คุณไม่ควรใช้ sendStickyBroadcast()
วิธีที่เลิกใช้แล้ว
จากเอกสาร Android:
วิธีนี้เลิกใช้แล้วใน API ระดับ 21 ไม่ควรใช้ Sticky broadcasts ไม่มีความปลอดภัย (ทุกคนสามารถเข้าถึงได้) ไม่มีการป้องกัน (ทุกคนสามารถแก้ไขได้) และปัญหาอื่น ๆ อีกมากมาย รูปแบบที่แนะนำคือการใช้การออกอากาศที่ไม่ติดหนึบเพื่อรายงานว่ามีบางอย่างเปลี่ยนแปลงไปโดยมีกลไกอื่นสำหรับแอปในการดึงค่าปัจจุบันเมื่อใดก็ตามที่ต้องการ
ฉันหวังว่านี่จะช่วยได้.