อะไรคือความแตกต่างระหว่างบริการและตัวรับสัญญาณออกอากาศ?


14

ฉันให้ฟังเกี่ยวกับการให้บริการและรับการออกอากาศ อะไรคือความแตกต่างระหว่างพวกเขาและสิ่งที่พวกเขาส่งผลกระทบต่อการทำงานของโทรศัพท์ Android ของฉันจากมุมมองของฉัน?


คุณรู้แทนที่จะสร้างพอร์ตบนเลเยอร์ TCP เรามักจะสร้างตัวรับสัญญาณออกอากาศเพื่อประหยัดแบตเตอรี่และการประมวลผลมากมาย .. เมื่อมีเหตุการณ์บางอย่างเกิดขึ้นใน Android .... การออกอากาศจะถูกส่งภายในโทรศัพท์ไปยังแอพทั้งหมด .. และถ้าคุณ มีตัวรับสัญญาณออกอากาศไปยังเหตุการณ์ที่เขียน ,, จะถูกเรียกโดยอัตโนมัติ ในทางเทคนิคเหตุการณ์ที่เกิดขึ้นเรียกว่าเจตนาในแง่ของ Android
Rahul Raina

คำตอบ:


27

แอปพลิเคชัน Android มีองค์ประกอบสามชนิด โดยทั่วไปผู้ใช้ไม่จำเป็นต้องรู้เกี่ยวกับพวกเขา: พวกเขาเป็นวิธีที่ผู้เขียนแอปจะเขียนโปรแกรมพฤติกรรมที่เฉพาะเจาะจงลงในแอพของพวกเขา แต่ถ้าคุณดูพฤติกรรมของแอพอย่างใกล้ชิดเช่นกับตัวจัดการงานหรือถ้าคุณกำลังทำสิ่งต่าง ๆ โดยอัตโนมัติด้วยแอพอย่าง Tasker มันจะช่วยให้คุณเข้าใจว่ามันเข้ากันได้อย่างไรในระบบ

กิจกรรมเป็นชนิดที่คุ้นเคยมากที่สุดส่วนประกอบ: มันเป็นหน้าต่างคุณสามารถดู: ทั้งแบบเต็มหน้าจอหรือโต้ตอบขนาด กิจกรรมจะทำงานเฉพาะเมื่อกิจกรรมนั้นแสดงบนหน้าจอ เมื่อคุณออกจากกิจกรรมแล้ว Android จะทำให้แอปนั้นอยู่ในหน่วยความจำพร้อมที่จะเริ่มต้นอีกครั้ง แต่กิจกรรมจะไม่ทำงานหมายความว่ามันจะไม่ใช้แบตเตอรี่หรือเครือข่าย แอปเริ่มกิจกรรมโดยใช้นักการเจตนา เจตนาสามารถระบุกิจกรรมที่จะเริ่มต้นอย่างชัดเจนหรือสามารถระบุการดำเนินการที่จะดำเนินการ (เช่นการเปิดไฟล์เฉพาะ) หากมีมากกว่าหนึ่งกิจกรรมสามารถ "จัดการ" เจตนาคุณจะเห็นกล่องโต้ตอบที่ขอให้คุณเลือก

บริการเป็นส่วนประกอบโปรแกรมอื่น เมื่อองค์ประกอบอื่น (อาจเป็นกิจกรรมหรือบริการอื่น) ได้เริ่มให้บริการมันจะทำงานในพื้นหลังจนกว่าจะหยุดตัวเอง ซึ่งหมายความว่าบริการอาจทำให้โทรศัพท์ของคุณตื่น (ใช้ล็อคปลุก ) แบตเตอรี่หมดหรือใช้ข้อมูลเครือข่ายจำนวนมากโดยไม่มีสิ่งใดแสดงบนหน้าจอ

แอพสามารถใช้บริการต่างๆเพื่อทำกระบวนการที่ใช้เวลานานในพื้นหลังเช่นการดาวน์โหลดไฟล์จากเซิร์ฟเวอร์หรือตรวจสอบอีเมลหรือตรวจสอบตำแหน่งของคุณ แม้ว่าบริการจะไม่แสดงหรือโต้ตอบกับคุณโดยตรง แต่บริการเหล่านั้นยังคงปรากฏในรายการ "แอพที่กำลังรัน" จากการตั้งค่าแอปให้เลือกปพลิเคชันหรือโปรแกรมผู้จัดการแล้วเล่น คุณสามารถหยุดบริการได้ แต่โดยทั่วไปไม่จำเป็น เนื่องจากบริการไม่สามารถมองเห็นได้โดยตรง Android ถือว่าพวกเขามีความสำคัญน้อยกว่ากิจกรรมดังนั้นพวกเขาจะเป็นคนแรกที่ถูกฆ่าเมื่อโทรศัพท์ของคุณต้องการหน่วยความจำเพิ่มเติม

เครื่องรับสัญญาณออกอากาศเป็นองค์ประกอบประเภทที่สาม เช่นเดียวกับบริการพวกเขามีอยู่ในพื้นหลังและไม่โต้ตอบกับคุณโดยตรง แต่แตกต่างจากบริการที่พวกเขาไม่สามารถทำงานต่อไปหรือทำงานยาว: พวกเขามีอยู่เพื่อตอบสนองต่อเหตุการณ์ และแตกต่างจากกิจกรรมและบริการผู้รับมากกว่าหนึ่งรายสามารถเริ่มต้นได้ในคราวเดียว

คอมโพเนนต์ถ่ายทอดเจตนาที่เป็นไปได้สำหรับแอปเดียว แต่บ่อยครั้งขึ้นโดยไม่ระบุแอปเฉพาะ ในกรณีนี้ความตั้งใจมักจะหมายถึงเหตุการณ์ที่เกิดขึ้นเช่นแบตเตอรี่ใกล้หมด ระบบค้นหาตัวรับสัญญาณออกอากาศทั้งหมดที่ลงทะเบียนความสนใจ (โดยใช้ตัวกรองเจตนา ) และเรียกใช้แต่ละรายการ เครื่องรับสัญญาณออกอากาศแต่ละเครื่องสามารถตอบสนองทันทีเช่นโดยการสร้างการแจ้งเตือนหรือสามารถเริ่มบริการหรือกิจกรรมเพื่อดำเนินการต่อไป ทันทีที่ตัวรับสัญญาณบรอดคาสต์ได้จัดการกับเหตุการณ์มันจะหยุดและจะไม่ทำงานอีกครั้งจนกว่าเหตุการณ์ที่คล้ายกันอื่นจะออกอากาศ

ตัวอย่างขององค์ประกอบทั้งสามที่ทำงานร่วมกันคือเมื่อคุณดาวน์โหลดแอพจาก Google Play ก่อนอื่นกิจกรรม Google Play จะมีส่วนติดต่อแบบภาพให้คุณเลือกเนื้อหาที่จะดาวน์โหลด รายการแอพอาจเป็นกิจกรรมเดียว คลิกที่ปุ่ม "ติดตั้ง" เริ่มกิจกรรมอื่นเพื่อแสดงการยืนยันหรือโต้ตอบการชำระเงิน เมื่อคุณยืนยันกิจกรรมไดอะล็อกจะเริ่มต้นบริการ บริการจะดาวน์โหลดเนื้อหาต่อไปแม้ว่ากิจกรรมจะเสร็จสิ้นและจะไม่ทำงานอีกต่อไป

แต่บางทีโทรศัพท์อาจขาดการเชื่อมต่ออินเทอร์เน็ตในขณะที่กำลังดาวน์โหลดแอพใหม่ หากสิ่งนี้เกิดขึ้นบริการดาวน์โหลดของ Google Play จะลงทะเบียนเครื่องรับสัญญาณออกอากาศพร้อมตัวกรองความตั้งใจที่จะบอกว่าสนใจการเปลี่ยนแปลงการเชื่อมต่อเครือข่ายแล้วบริการจะหยุดตัวเอง เมื่อโทรศัพท์เชื่อมต่อกับอินเทอร์เน็ตระบบจะถ่ายทอดกิจกรรม Android จะเริ่มตัวรับสัญญาณออกอากาศที่ลงทะเบียนบริการ Google Play พร้อมกับตัวรับสัญญาณออกอากาศอื่น ๆ ที่รอเหตุการณ์นั้น ในกรณีนี้เครื่องรับสัญญาณออกอากาศจะเริ่มบริการดาวน์โหลดอีกครั้ง บริการจะสร้างการแจ้งเตือนเมื่อการดาวน์โหลดดำเนินการและเมื่อเสร็จสิ้นแล้วจะส่งการออกอากาศของตัวเองเพื่อแจ้งให้แอปอื่น ๆ ทราบว่ามีการติดตั้งแพคเกจใหม่แล้วและจะหยุดตัวเอง ในทางกลับกันสิ่งนี้จะเริ่มตัวรับสัญญาณออกอากาศจากแอพอื่น ๆ

สรุป:-

  • กิจกรรมหมายถึงหน้าต่างบนหน้าจอ บริการดำเนินงานพื้นหลังที่อาจใช้เวลานาน เครื่องรับสัญญาณออกอากาศจะทำงานในช่วงเวลาสั้น ๆ เพื่อจัดการกับเหตุการณ์
  • ทั้งสามเริ่มใช้ intents แต่ใช้กลไกที่แตกต่างกัน แอปที่เรียกใช้จะต้องระบุอย่างชัดเจนว่าจะเริ่มคอมโพเนนต์ชนิดใด (โดยการเรียกวิธีการที่แตกต่างกันในแต่ละกรณี)
  • เมื่อแอพเริ่มต้นกิจกรรมโดยใช้ความตั้งใจมันจะเริ่มกิจกรรมเดียวเท่านั้น (อาจแสดงกล่องโต้ตอบ "ดำเนินการโดยใช้ ... " เพื่อให้คุณเลือกได้) และสิ่งเดียวกันจะให้บริการ แต่การออกอากาศเจตนาอาจเริ่มออกอากาศหลายครั้ง เครื่องรับอาจเป็นไปได้จากแอพที่แตกต่างกัน
  • ในฐานะผู้ใช้คุณโต้ตอบกับกิจกรรมโดยตรง คุณไม่ได้โต้ตอบกับบริการ แต่พวกเขาสามารถชะลอโทรศัพท์และใช้ทรัพยากร คุณไม่ต้องโต้ตอบกับเครื่องรับสัญญาณออกอากาศและเพราะมันมีอายุสั้นคุณจึงไม่ต้องกังวลกับการจัดการมัน

คำตอบที่มีประโยชน์มาก ฉันต้องการยืนยันบางสิ่ง: เกิดอะไรขึ้นกับแอปที่ผู้ใช้ปิดการใช้งาน Android เคยเริ่มรับสัญญาณออกอากาศสำหรับจุดประสงค์ที่ลงทะเบียนไว้หรือไม่ หรือแอปที่ปิดใช้งานเหล่านั้นสามารถให้บริการในพื้นหลังได้หรือไม่? เหตุใดปุ่ม Force-Stop จึงไม่เป็นสีเทาสำหรับแอปที่ปิดใช้งานแม้หลังจากรีบูตแล้ว เห็นได้ชัดว่ากิจกรรมของพวกเขาไม่สามารถเปิดตัวได้
Firelord

@ Firelord หากคุณมีคำถามใหม่คุณควรโพสต์เป็นคำถามใหม่ ความคิดเห็นไม่อนุญาตให้มีคำตอบเชิงลึกและไม่ทำให้คำถามของคุณสามารถค้นหาได้สำหรับผู้เข้าชมรายอื่น
Dan Hulme

โพสต์ที่ดี แต่ในความเป็นจริงมีสี่องค์ประกอบ ผู้ให้บริการเนื้อหาหายไป
Alexandre Martin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.