อะไรคือความแตกต่างระหว่าง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 ไม่มีความปลอดภัย (ทุกคนสามารถเข้าถึงได้) ไม่มีการป้องกัน (ทุกคนสามารถแก้ไขได้) และปัญหาอื่น ๆ อีกมากมาย รูปแบบที่แนะนำคือการใช้การออกอากาศที่ไม่ติดหนึบเพื่อรายงานว่ามีบางอย่างเปลี่ยนแปลงไปโดยมีกลไกอื่นสำหรับแอปในการดึงค่าปัจจุบันเมื่อใดก็ตามที่ต้องการ
ฉันหวังว่านี่จะช่วยได้.