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

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

หน้านี้อธิบายการเปลี่ยนแปลงที่สำคัญล่าสุดบางอย่างในบริการที่ทำงานอยู่เบื้องหน้า และผลกระทบต่อแอปที่ไม่ได้กำหนดเป้าหมายเป็นแพลตฟอร์ม 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