Hệ thống ưu tiên các yêu cầu của ứng dụng về tài nguyên dựa trên trạng thái thiết bị, trạng thái ứng dụng và bộ chứa chế độ chờ của ứng dụng.
Hệ thống Android có thể thực thi các giới hạn tài nguyên theo hai cách. Một cách để tối ưu hoá việc sử dụng tài nguyên là trì hoãn việc thực thi công việc cho đến khi thiết bị thoát khỏi trạng thái thiết bị tiết kiệm pin, chẳng hạn như chế độ nghỉ. Ví dụ: các công việc thông thường và chuông báo không chính xác sẽ bị trì hoãn để thực thi sau khi thiết bị thoát khỏi chế độ nghỉ.
Một cách khác là giảm mức độ ứng dụng có thể đánh thức thiết bị và thực hiện công việc, dựa trên bộ chứa chế độ chờ hiện tại của ứng dụng. Hệ thống có thể giảm cả tần suất (tần suất ứng dụng đánh thức thiết bị) và thời lượng tổng thể (thời lượng thiết bị ở trạng thái thức). Ví dụ: nếu ứng dụng nằm trong bộ chứa chế độ chờ hiếm, thì ứng dụng có thể chạy các công việc được lên lịch trong tổng thời gian 10 phút trong khoảng thời gian 24 giờ.
Xin lưu ý rằng WorkManager sử dụng JobScheduler để lên lịch tác vụ khi ứng dụng không hiển thị và do đó, worker sẽ chịu ảnh hưởng của các giới hạn tài nguyên công việc.
Bạn có thể tìm hiểu thêm về các quy định hạn chế này bằng cách đọc:
- Giới hạn tài nguyên dựa trên trạng thái thiết bị
- Giới hạn tài nguyên dựa trên trạng thái ứng dụng
- Giới hạn tài nguyên dựa trên bộ chứa chế độ chờ của ứng dụng
Xin lưu ý rằng trạng thái thiết bị và trạng thái ứng dụng có thể thay thế các giới hạn của bộ chứa chế độ chờ ứng dụng. Ví dụ: nếu thiết bị đang sạc, hệ thống sẽ cho phép các ứng dụng trong bộ chứa chế độ chờ hiếm thực thi các công việc trong hơn 10 phút trong khoảng thời gian 24 giờ liên tục.
Có những thay đổi về hành vi cũng ảnh hưởng đến giới hạn tài nguyên. Hãy xem phần Các thay đổi về hành vi của Android ảnh hưởng đến giới hạn tài nguyên để tìm hiểu thêm.
Giới hạn tài nguyên dựa trên trạng thái thiết bị
Hệ thống cũng có thể miễn hoặc thực thi các giới hạn tài nguyên dựa trên trạng thái thiết bị. Ví dụ: một thiết bị ở trạng thái đang sạc sẽ được cấp quyền truy cập tài nguyên không bị hạn chế bất kể bộ chứa chế độ chờ của ứng dụng.
Trạng thái thiết bị |
Việc làm |
Chuông báo |
Quyền truy cập mạng |
Nhắn tin qua đám mây Firebase |
Đang sạc |
Không có giới hạn thực thi ngoại trừ bộ chứa chế độ chờ bị hạn chế |
Không có giới hạn thực thi cho tất cả các bộ chứa chế độ chờ và trạng thái quy trình, ngoại trừ trường hợp người dùng hạn chế pin ứng dụng theo cách thủ công |
Không có hạn chế |
Không có hạn chế |
Màn hình bật |
Các giới hạn thực thi được thực thi dựa trên bộ chứa chế độ chờ |
Hạn mức thực thi được thực thi dựa trên quy trình của ứng dụng và bộ chứa chế độ chờ |
Quyền truy cập phụ thuộc vào bộ chứa chế độ chờ hoặc trạng thái quy trình ứng dụng |
Không có hạn chế |
Chế độ tắt màn hình và chế độ nghỉ đang hoạt động |
Các giới hạn thực thi được thực thi dựa trên bộ chứa chế độ chờ và quá trình thực thi được trì hoãn đến khoảng thời gian bảo trì chế độ nghỉ |
Hạn mức thực thi được thực thi dựa trên bộ chứa chế độ chờ. Chuông báo thông thường: Đã hoãn sang thời gian bảo trì chế độ nghỉ Chuông báo khi ở chế độ rảnh: Giới hạn ở mức 7 chuông báo mỗi giờ |
Bị hạn chế trong trạng thái ngủ |
Mức độ ưu tiên cao: Không có giới hạn thực thi Mức độ ưu tiên bình thường: Đã hoãn đến thời gian bảo trì chế độ nghỉ |
Giới hạn tài nguyên dựa trên trạng thái ứng dụng
Việc hệ thống có thực thi các giới hạn tài nguyên của bộ chứa chế độ chờ của ứng dụng hay không phụ thuộc vào tầm quan trọng của quy trình ứng dụng. Hãy xem ActivityManager.RunningAppProcessInfo.importance
để hiểu các cấp độ quan trọng của quy trình.
Người dùng thiết bị cũng có thể chọn ghi đè theo cách thủ công các hoạt động tối ưu hoá quản lý nguồn điện của ứng dụng. Thao tác này sẽ thay thế các giới hạn của nhóm chế độ chờ ứng dụng.
Trạng thái ứng dụng |
Việc làm |
Chuông báo |
Mạng |
Quy trình ứng dụng hiển thị hoặc ở trạng thái nền trước |
Không có giới hạn thực thi |
Không có giới hạn về tần suất |
Không có hạn chế |
Quy trình ứng dụng đang chạy một dịch vụ trên nền trước |
Hạn mức thực thi được thực thi dựa trên bộ chứa chế độ chờ*** |
Giới hạn tần suất được thực thi dựa trên bộ chứa chế độ chờ |
Không có hạn chế |
Người dùng hạn chế pin của ứng dụng theo cách thủ công |
Việc thực thi bị hạn chế |
Việc thực thi bị hạn chế |
Quyền truy cập phụ thuộc vào hành vi của bộ chứa ở chế độ chờ |
Người dùng huỷ hạn chế pin của ứng dụng theo cách thủ công |
Giới hạn thực thi rất hào phóng*** |
Không có giới hạn thực thi |
Không bị hạn chế trừ phi thiết bị đang ở chế độ tiết kiệm dữ liệu |
*** Hành vi hạn mức thực thi cho công việc đã thay đổi trong Android 16. Trước Android 16, không có giới hạn thực thi khi ứng dụng đang chạy một dịch vụ trên nền trước hoặc người dùng không hạn chế pin của ứng dụng.
Giới hạn tài nguyên dựa trên bộ chứa chế độ chờ của ứng dụng
Lưu ý: Các giá trị trong bảng này không đảm bảo thời lượng thực thi, vì các điều kiện thiết bị khác hoặc thay đổi về bộ chứa có thể ảnh hưởng đến các quy tắc hạn chế về tài nguyên. Các giá trị này cũng có thể thay đổi trong các bản phát hành Android trong tương lai.
Các công việc thông thường, công việc ưu tiên, chuông báo và quyền truy cập mạng có thể bị hạn chế dựa trên bộ chứa chế độ chờ ứng dụng. Hiểu rõ cách các bộ chứa chế độ chờ của ứng dụng ảnh hưởng đến ứng dụng của bạn bằng cách sử dụng các giới hạn quản lý nguồn điện gần đúng này làm nguyên tắc. Để đạt được hiệu suất tối ưu, hãy tuân thủ các phương pháp hay nhất về chế độ chờ của ứng dụng và tối ưu hoá mức sử dụng pin cho API lên lịch tác vụ.
Xin lưu ý rằng kể từ Android 13, bộ chứa chế độ chờ của ứng dụng không còn xác định số lượng FCM có mức độ ưu tiên cao mà ứng dụng có thể sử dụng.
Nhóm chế độ chờ của ứng dụng |
Công việc thông thường* |
Công việc ưu tiên** |
Chuông báo |
Mạng |
Hoạt động: |
Tối đa 20 phút trong khoảng thời gian 60 phút liên tục*** |
Tối đa 30 phút trong khoảng thời gian 24 giờ liên tục*** |
Không có giới hạn thực thi |
Không có hạn chế |
Thời lượng làm việc: |
Tối đa 10 phút trong khoảng thời gian 4 giờ |
Tối đa 15 phút trong khoảng thời gian 24 giờ |
Giới hạn ở mức cứ mỗi giờ là 10 phút |
Không có hạn chế |
Thường xuyên: |
Tối đa 10 phút trong khoảng thời gian 12 giờ |
Tối đa 10 phút trong khoảng thời gian 24 giờ |
Giới hạn ở mức cứ mỗi giờ là 2 phút |
Không có hạn chế |
Hiếm: |
Tối đa 10 phút trong khoảng thời gian 24 giờ |
Tối đa 10 phút trong khoảng thời gian 24 giờ |
Giới hạn ở mức cứ mỗi giờ là 1 phút |
Đã tắt |
Bị hạn chế: |
Một lần mỗi ngày, tối đa 10 phút |
Tối đa 5 phút trong khoảng thời gian 24 giờ |
Một chuông báo mỗi ngày, có thể là chuông báo chính xác hoặc chuông báo không chính xác |
Đã tắt |
* Công việc thông thường mô tả những công việc không sử dụng cờ setUserInitiated(true)
hoặc setExpedited(true)
trong JobScheduler hoặc worker ưu tiên trong WorkManager.
** Công việc ưu tiên có hạn mức thực thi riêng biệt với công việc thông thường. Bạn có thể định cấu hình công việc ưu tiên trong WorkManager để tiếp tục chạy bằng hạn mức thực thi công việc thông thường sau khi hết hạn mức ưu tiên.
*** Hành vi hạn mức thực thi cho công việc đã thay đổi trong Android 16. Trước Android 16, không có giới hạn thực thi khi ứng dụng nằm trong bộ chứa chế độ chờ đang hoạt động.
Các thay đổi về hành vi của Android ảnh hưởng đến giới hạn tài nguyên
Các bản cập nhật Android sau đây đã thay đổi giới hạn tài nguyên ứng dụng.
Android 16
Thay đổi về hành vi tối ưu hoá hạn mức JobScheduler
Android đã điều chỉnh hạn mức thời gian chạy thực thi công việc thông thường và ưu tiên dựa trên các yếu tố sau:
- Ứng dụng đang ở bộ chứa chế độ chờ ứng dụng nào
- Nếu công việc bắt đầu thực thi trong khi ứng dụng ở trạng thái trên cùng
- Nếu công việc đang thực thi trong khi chạy Dịch vụ trên nền trước
Android 13
Thay đổi về hành vi của Hạn mức thông báo qua đám mây của Firebase (FCM) ưu tiên cao
- Bộ chứa chế độ chờ của ứng dụng không còn xác định số lượng FCM có mức độ ưu tiên cao mà một ứng dụng có thể sử dụng.
- Hệ thống hiện hạ cấp thông báo có mức độ ưu tiên cao nếu phát hiện một ứng dụng liên tục gửi thông báo có mức độ ưu tiên cao nhưng không dẫn đến thông báo
- Để biết các nguyên tắc hiện hành về thông báo có mức độ ưu tiên cao, vui lòng tham khảo tài liệu của Firebase về cách đặt và quản lý mức độ ưu tiên của thông báo.
Android 9
Ra mắt tính năng Nhóm chế độ chờ ứng dụng
Android 9 ra mắt một tính năng quản lý pin mới là Bộ chứa chế độ chờ ứng dụng. Bộ chứa chế độ chờ của ứng dụng giúp hệ thống ưu tiên các yêu cầu của ứng dụng về tài nguyên, dựa trên mức sử dụng gần đây và tần suất sử dụng ứng dụng. Dựa trên mẫu sử dụng ứng dụng, mỗi ứng dụng sẽ được đưa vào một trong 5 bộ chứa ưu tiên. Hệ thống sẽ giới hạn các tài nguyên thiết bị có sẵn cho mỗi ứng dụng dựa trên bộ chứa chứa ứng dụng đó.