Tài liệu về dịch vụ trên nền trước mô tả hành vi hiện tại của các dịch vụ trên nền trước của Android. Tài liệu này hướng dẫn về các phương pháp hay nhất cho hầu hết ứng dụng, bất kể ứng dụng đó có nhắm đến phiên bản Android mới nhất hay không.
Trang này mô tả một số thay đổi quan trọng gần đây nhất đối với các dịch vụ trên nền trước và ý nghĩa của những thay đổi đó đối với các ứng dụng không nhắm đến phiên bản mới nhất của nền tảng Android. Trong nhiều trường hợp, các phương pháp hay nhất không bắt buộc đối với các ứng dụng nhắm đến cấp độ API thấp hơn sẽ trở thành bắt buộc đối với các ứng dụng nhắm đến cấp độ API cao hơn.
Android 16 (cấp độ API 36)
Các thay đổi sau đây áp dụng cho các ứng dụng chạy trên Android 16 trở lên, bất kể cấp độ API mà ứng dụng đó nhắm đến:
Các công việc trên nền bắt đầu từ một dịch vụ trên nền trước hiện phải tuân thủ hạn mức thời gian chạy tương ứng. Điều này bao gồm cả các công việc được lên lịch trực tiếp bằng
JobScheduler, cũng như các công việc do các thư viện khác tạo như WorkManager hoặcDownloadManager.Để chuyển dữ liệu nhằm phản hồi thao tác của người dùng, hãy cân nhắc sử dụng a công việc chuyển dữ liệu do người dùng khởi tạo. Các công việc này được miễn tuân theo hạn mức công việc thông thường.
Android 15 (cấp độ API 35)
Các yêu cầu sau đây áp dụng cho các ứng dụng nhắm đến API cấp 35 trở lên:
- Có các hạn chế mới về thời gian chạy của dịch vụ trên nền trước
dataSync. Các hạn chế này được mô tả trong phần Hành vi hết thời gian chờ của dịch vụ trên nền trước. Các hạn chế tương tự áp dụng cho loại dịch vụ trên nền trướcmediaProcessing(mới trong Android 15). - Các dịch vụ trên nền trước
BOOT_COMPLETEDkhông còn được phép khởi chạy một số dịch vụ trên nền trước nữa. - Các ứng dụng có quyền
SYSTEM_ALERT_WINDOWchỉ được phép khởi chạy các dịch vụ trên nền trước từ nền nếu hiện có một cửa sổ lớp phủ hiển thị (hoặc nếu đáp ứng một trong các trường hợp miễn trừ khác đối với các hạn chế khi khởi động từ nền). Trước đây, trường hợp miễn trừ cho các ứng dụng đó rộng hơn.
Android 14 (cấp độ API 34)
Các yêu cầu sau đây áp dụng cho các ứng dụng nhắm đến API cấp 34 trở lên:
- Bạn phải khai báo tất cả các dịch vụ trên nền trước cùng với loại dịch vụ của chúng.
- Các ứng dụng phải yêu cầu loại quyền thích hợp cho loại công việc mà dịch vụ trên nền trước sẽ thực hiện. Mỗi loại dịch vụ trên nền trước
có một loại quyền tương ứng. Ví dụ: nếu một ứng dụng khởi chạy một
dịch vụ trên nền trước sử dụng camera, thì bạn phải yêu cầu cả quyền
FOREGROUND_SERVICEvàFOREGROUND_SERVICE_CAMERA. Nếu một ứng dụng nhắm đến API cấp 34 trở lên và không yêu cầu quyền cụ thể thích hợp, thì hệ thống sẽ gửi mộtSecurityException.
Android 12 (cấp độ API 31)
Các yêu cầu sau đây áp dụng cho các ứng dụng nhắm đến API cấp 31 trở lên:
- Các ứng dụng không được phép khởi chạy các dịch vụ trên nền trước khi ứng dụng đang ở chế độ nền, ngoại trừ một số trường hợp cụ thể. Để biết thêm thông tin và thông tin về các trường hợp ngoại lệ đối với quy tắc này, hãy xem phần Các hạn chế khi khởi động dịch vụ trên nền trước từ nền.
Android 11 (cấp độ API 30)
Các yêu cầu sau đây áp dụng cho các ứng dụng nhắm đến API cấp 30 trở lên:
- Nếu các dịch vụ trên nền trước của một ứng dụng sử dụng camera hoặc micrô, thì ứng dụng đó phải
khai báo dịch vụ bằng loại dịch vụ
camerahoặcmicrophonetương ứng.
Android 10 (cấp độ API 29)
Các yêu cầu sau đây áp dụng cho các ứng dụng nhắm đến API cấp 29 trở lên:
- Nếu các dịch vụ trên nền trước của một ứng dụng sử dụng thông tin vị trí, thì ứng dụng đó phải
khai báo dịch vụ bằng loại dịch vụ
location.
Android 9 (cấp độ API 28)
Android 9 ra mắt quyền
FOREGROUND_SERVICE. Các ứng dụng chạy trên Android 9 sử dụng dịch vụ trên nền trước phải có quyền đó.
Nếu một ứng dụng nhắm đến API cấp 28 trở lên cố gắng
tạo một dịch vụ trên nền trước mà không yêu cầu quyền FOREGROUND_SERVICE, thì hệ thống sẽ gửi một SecurityException.