Giới hạn tài nguyên quản lý nguồn

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:

  1. Giới hạn tài nguyên dựa trên trạng thái thiết bị
  2. Giới hạn tài nguyên dựa trên trạng thái ứng dụng
  3. 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ụngtố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:

  1. Ứng dụng đang ở bộ chứa chế độ chờ ứng dụng nào
  2. 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
  3. 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

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 đó.