การเปลี่ยนแปลงบริการที่ทำงานอยู่เบื้องหน้า

เอกสารประกอบเกี่ยวกับบริการที่ทำงานอยู่เบื้องหน้าจะอธิบายลักษณะการทำงานปัจจุบันของ บริการที่ทำงานอยู่เบื้องหน้าของ Android เอกสารประกอบนี้ให้คำแนะนำเกี่ยวกับแนวทางปฏิบัติแนะนำสำหรับแอปส่วนใหญ่ ไม่ว่าแอปเหล่านั้นจะกำหนดเป้าหมายเป็น Android เวอร์ชันล่าสุดหรือไม่ก็ตาม

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

Android 16 (ระดับ API 36)

การเปลี่ยนแปลงต่อไปนี้มีผลกับแอปที่ทำงานบน Android 16 ขึ้นไป ไม่ว่าแอปจะกำหนดเป้าหมายเป็นระดับ API ใดก็ตาม

  • ตอนนี้งานที่ทำงานอยู่เบื้องหลังซึ่งเริ่มจากบริการที่ทำงานอยู่เบื้องหน้าต้องเป็นไปตามโควต้ารันไทม์ของตนเองตามลำดับ ซึ่งรวมถึงงานที่กำหนดเวลาโดยตรงด้วย JobScheduler รวมถึงงานที่สร้างโดยไลบรารีอื่นๆ เช่น WorkManager หรือ DownloadManager

    หากต้องการโอนข้อมูลเพื่อตอบสนองต่อการดำเนินการของผู้ใช้ ให้ลองใช้งานการโอนข้อมูลที่ผู้ใช้เริ่มต้น งานเหล่านี้ได้รับการยกเว้นจาก โควตางานปกติ

Android 15 (ระดับ API 35)

ข้อกำหนดต่อไปนี้ใช้กับแอปที่กำหนดเป้าหมายเป็น API ระดับ 35 ขึ้นไป

Android 14 (ระดับ API 34)

ข้อกำหนดต่อไปนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น API ระดับ 34 ขึ้นไป

Android 12 (ระดับ API 31)

ข้อกำหนดต่อไปนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น API ระดับ 31 ขึ้นไป

Android 11 (ระดับ API 30)

ข้อกำหนดต่อไปนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น API ระดับ 30 ขึ้นไป

  • หากบริการที่ทำงานอยู่เบื้องหน้าของแอปใช้กล้องหรือไมโครโฟน แอปจะต้องประกาศบริการที่มีประเภทบริการ camera หรือ microphone ตามลำดับ

Android 10 (ระดับ API 29)

ข้อกำหนดต่อไปนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น API ระดับ 29 ขึ้นไป

  • หากบริการที่ทำงานอยู่เบื้องหน้าของแอปใช้ข้อมูลตำแหน่ง แอปจะต้อง ประกาศบริการด้วยประเภทบริการ location

Android 9 (ระดับ API 28)

Android 9 เปิดตัวสิทธิ์ FOREGROUND_SERVICE แอปที่ทำงานบน Android 9 ซึ่งใช้บริการที่ทำงานอยู่เบื้องหน้าต้องมีสิทธิ์ดังกล่าว

หากแอปที่กำหนดเป้าหมายเป็น API ระดับ 28 ขึ้นไปพยายาม สร้างบริการที่ทำงานอยู่เบื้องหน้าโดยไม่ขอสิทธิ์ FOREGROUND_SERVICE ระบบจะแสดง SecurityException