Các thay đổi đối với dịch vụ trên nền trước

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 đưa ra hướng dẫn về các phương pháp hay nhất cho hầu hết các ứ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à tác động đối với những ứ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 ứng dụng nhắm đến các cấp độ API thấp hơn) sẽ trở thành bắt buộc đối với ứng dụng nhắm đến các cấp độ API cao hơn.

Android 16 (cấp độ API 36)

Những 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ể ứng dụng đó nhắm đến cấp độ API nào:

  • Các tác vụ trong nền được bắt đầu từ một dịch vụ 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ả những công việc được lên lịch trực tiếp bằng JobScheduler, cũng như những công việc do các thư viện khác tạo ra, chẳng hạn như WorkManager hoặc DownloadManager.

    Để chuyển dữ liệu theo yêu cầu của người dùng, hãy cân nhắc sử dụng tác vụ chuyển dữ liệu do người dùng yêu cầu. Những công việc này được miễn hạn ngạch việc làm thông thường.

Android 15 (cấp độ API 35)

Các yêu cầu sau đây áp dụng cho những ứng dụng nhắm đến API cấp 35 trở lên:

Android 14 (cấp độ API 34)

Các yêu cầu sau đây áp dụng cho những ứ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 các loại dịch vụ của chúng.
  • Ứ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ụ nền trước sẽ thực hiện. Mỗi kiểu dịch vụ nền trước đều có một kiểu quyền tương ứng. Ví dụ: nếu một ứng dụng khởi chạy một dịch vụ nền trước dùng camera, bạn phải yêu cầu cả quyền FOREGROUND_SERVICEFOREGROUND_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ột SecurityException.

Android 12 (cấp độ API 31)

Các yêu cầu sau đây áp dụng cho những ứng dụng nhắm đến API cấp 31 trở lên:

  • Các ứng dụng không được phép chạy dịch vụ trên nền trước khi ứng dụng đang chạy ở 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 bài viết Các hạn chế khi khởi động một dịch vụ 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 những ứ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ụ camera hoặc microphone tương ứng.

Android 10 (cấp độ API 29)

Các yêu cầu sau đây áp dụng cho những ứ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 giới thiệu quyền FOREGROUND_SERVICE. Những ứng dụng chạy trên Android 9 và 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ụ 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.