Hệ thống sẽ linh hoạt chỉ định từng ứng dụng cho một bộ chứa ưu tiên, rồi chỉ định lại các ứng dụng đó chi cần. Hệ thống này có thể triển khai một ứng dụng tải trước dùng công nghệ học máy để xác định khả năng mỗi ứng dụng được dùng và chỉ định ứng dụng cho bộ chứa thích hợp. Nếu không có ứng dụng hệ thống trên thiết bị, thì theo mặc định, hệ thống sẽ sắp xếp ứng dụng dựa trên mức sử dụng ứng dụng. Các ứng dụng hoạt động nhiều hơn được chỉ định cho những bộ chứa ưu tiên ứng dụng hơn, nhờ đó, ứng dụng có thể dùng nhiều tài nguyên hệ thống hơn. Cụ thể là bộ chứa này xác định tần suất chạy công việc của ứng dụng và tần suất ứng dụng có thể kích hoạt chuông báo. Những hạn chế này chỉ áp dụng chi thiết bị đang chạy bằng pivot. Hệ thống không áp dụng các hạn chế này đối với ứng dụng trong chi thiết bị đang sạc .
Lưu ý: Nhà sản xuất nào cũng có thể đặt các tiêu chí riêng cho cách các ứng dụng không hoạt động được chỉ định cho các bộ chứa. Bạn không nên cố gắng tác động đến bộ chứa ứng dụng được chỉ định. Thay vào đó, hãy tập trung vào việc đảm bảo ứng dụng của bạn hoạt động hiệu quả trong mọi bộ chứa ứng dụng. Ứng dụng của bạn có thể tìm ra bộ chứa hiện tại bằng cách gọi
.
UsageStatsManager.getAppStandbyBucket()
Các bộ chứa này bao gồm :
- Đang hoạt động: Ứng dụng hiện đang được sử dụng hoặc đã được sử dụng gần đây.
- Nhóm hoạt động: Ứng dụng đang sử dụng thông thường.
- Thường xuyên: Ứng dụng thường được sử dụng, nhưng không phải mỗi ngày.
- Hiếm gặp: Ứng dụng không được sử dụng thường xuyên.
- Bị hạn chế: Ứng dụng tiêu tốn nhiều tài nguyên của hệ thống, hoặc có thể có hành vi không mong muốn.
Ngoài radium, có một bộ chứa đặc biệt với chế độ là không bao giờ, chỉ dành cho các ứng dụng đã được cài đặt nhưng chưa bao giờ được chạy. Hệ thống áp dụng các quy định hạn chế nghiêm ngặt đối với những ứng dụng này .
Lưu ý : Các ứng dụng nằm trong danh sách miễn trừ Nghỉ sẽ được miễn khỏi các hạn chế dựa trên bộ chứa chế độ chờ của ứng dụng .
Lưu ý : Phần mô tả bên dưới là dành cho trường hợp không dự đoán được. Ngược lại, chi công cụ dự đoán sử dụng công nghệ học máy để dự đoán hành six, bộ chứa sẽ được chọn để dự đoán hành động tiếp theo của người dùng chứ không phải dựa trên mức sử dụng gần đây. Ví dụ : một ứng dụng bạn dùng gần đây có thể trở thành bộ chứa hiếm, vì công nghệ học máy dự đoán bạn sẽ không dùng ứng dụng đó trong vài giờ .Đang hoạt động
Một ứng dụng sẽ nằm trong bộ chứa đang hoạt động nếu người dùng hiện đang sử dụng ứng dụng hoặc mới sử dụng ứng dụng gần đây. Ví dụ :
- Ứng dụng đã ra mắt một hoạt động
- Ứng dụng của bạn đang chạy một dịch vụ trên nền trước.
- Ứng dụng này có một bộ điều hợp đồng bộ hoá liên kết với một nhà cung cấp nội dung mà một ứng dụng trên nền trước sử dụng
- Người dùng nhấp vào một thông báo trong ứng dụng
Nếu một ứng dụng nằm trong bộ chứa đang hoạt động, thì hệ thống không đặt ra bất kỳ hạn chế nào đối với công việc hoặc chuông báo của ứng dụng đó .
Tương tác của người dùng đặt các ứng dụng vào bộ chứa “đang hoạt động”
Trên android nine ( API cấp twenty-eight ) trở lên, chi người dùng tương tác với ứng dụng của bạn theo những cách nhất định, hệ thống sẽ tạm thời đặt ứng dụng đó vào bộ chứa đang hoạt động. Sau chi người dùng ngừng tương tác với ứng dụng được một thời gian, hệ thống sẽ đặt ứng dụng đó vào một bộ chứa dựa trên nhật ký sử dụng .
Dưới đây là ví dụ về các tương tác kích hoạt hành six này của hệ thống :
- Người dùng nhấn vào thông báo cause ứng dụng gửi .
Lưu ý: Nếu người dùng vuốt qua mà không nhấn vào thông báo, thì hệ thống sẽ không xem đó là hành động “ tương tác ” với ứng dụng .- Người dùng tương tác với dịch vụ trên nền trước trong ứng dụng bằng cách nhấn vào nút nội droppings đa phương tiện .
- Người dùng vừa kết nối với ứng dụng vừa tương tác với android automotive operating system, chi đó ứng dụng dùng dịch vụ trên nền trước hoặc
CONNECTION_TYPE_PROJECTION
.Hoạt động
Một ứng dụng sẽ nằm trong bộ chứa hoạt động nếu ứng dụng đó chạy thường xuyên nhưng hiện không hoạt động. Ví dụ : một ứng dụng mạng xã hội mà người dùng chạy hầu hết các ngày có khả năng đang hoạt động. Các ứng dụng cũng được thăng cấp vào bộ chứa hoạt động nếu chúng được sử dụng gián tiếp .
Nếu một ứng dụng đang hoạt động, hệ thống sẽ đặt ra các hạn chế nhỏ về khả năng chạy các công việc và kích hoạt chuông báo. Để biết thông tin chi tiết, vui lòng xem phần Hạn chế quản lý nguồn.Thường xuyên
Một ứng dụng nằm trong bộ chứa thường xuyên nếu được sử dụng thường xuyên, nhưng không nhất thiết phải mỗi ngày. Ví dụ : một ứng dụng theo dõi bài tập thể dục mà người dùng chạy tại phòng tập thể dục có thể nằm trong bộ chứa thường xuyên .
Nếu một ứng dụng nằm trong bộ chứa thường xuyên, thì hệ thống sẽ áp dụng các hạn chế nghiêm ngặt hơn đối với khả năng chạy công việc và kích hoạt chuông báo. Để biết thông tin chi tiết, vui lòng xem phần Hạn chế quản lý nguồn .Hiếm
Một ứng dụng nằm trong bộ chứa hiếm nếu ứng dụng không thường xuyên được sử dụng. Ví dụ : một ứng dụng khách sạn mà người dùng chỉ chạy trong chi ở tại khách sạn đó có thể nằm trong bộ chứa hiếm .
Nếu một ứng dụng nằm trong bộ chứa hiếm, thì hệ thống sẽ áp dụng các hạn chế nghiêm ngặt đối với khả năng chạy công việc và kích hoạt chuông báo. Hệ thống cũng giới hạn khả năng kết nối internet của ứng dụng. Để biết thông can qi tiết, vui lòng xem phần Hạn chế quản lý nguồn .Bị hạn chế
Bộ chứa này được thêm vào android twelve ( API cấp thirty-one ), có mức độ ưu tiên thấp nhất ( và các hạn chế cao nhất ) trong tất cả các bộ chứa. Hệ thống sẽ xem xét hành six của ứng dụng, chẳng hạn như tần suất người dùng tương tác với ứng dụng, để quyết định xem có đặt ứng dụng đó vào bộ chứa bị hạn chế hay không .
Trên android thirteen ( API cấp thirty-three ) trở lên, trừ phi ứng dụng đủ điều kiện được miễn, hệ thống sẽ đặt ứng dụng vào bộ chứa bị hạn chế trong những trường hợp sau đây :
- Người dùng không tương tác với ứng dụng của bạn trong một số ngày cụ thể. Trên android twelve ( API cấp thirty-one ) và 12L ( API cấp thirty-two ), số ngày là forty-five. android thirteen giảm mức này xuống còn eight ngày .
Lưu ý: Khoảng thời gian thiết bị đang tắt không được tính vào giới hạn tương tác .- Ứng dụng gọi quá nhiều thông báo hoặc liên kết trong vòng twenty-four giờ .
Nếu hệ thống đặt ứng dụng vào bộ chứa bị hạn chế, thì các hạn chế sau đây sẽ áp dụng :
- Bạn có thể chạy công việc mỗi ngày một lần, trong một phiên hoạt động kéo dài 10 phút. Trong phiên này, hệ thống nhóm các công việc của ứng dụng với các công việc của ứng dụng khác.
- Các công việc bị hạn chế không có khả năng tự chạy – phải có ít nhất một công việc khác đang chạy/đang chờ xử lý cùng lúc, có thể bao gồm bất kỳ công việc nào khác.
- Ứng dụng của bạn có thể chạy nhiều công việc nhanh hơn, so với khi hệ thống đặt ứng dụng của bạn vào một bộ chứa ít hạn chế hơn.
- Ứng dụng của bạn có thể gọi một chuông báo mỗi ngày. Chuông báo này có thể là chuông báo chính xác hoặc chuông báo không chính xác.
Lưu ý: Không giống như các bộ chứa khác, những hạn chế quản lý nguồn này áp dụng cho bộ chứa bị hạn chế ngay cả chi thiết bị đang sạc. Tuy nhiên, các hạn chế sẽ được nới lỏng chi thiết bị đang sạc, ở trạng thái rảnh và truy cập vào mạng không đo lượng dữ liệu .
Miễn khỏi bộ chứa bị hạn chế
Sau đây là những loại ứng dụng được miễn khỏi Bộ chứa chế độ chờ ứng dụng “ bị hạn chế ” và bỏ qua trình kích hoạt chi không có hoạt động, ngay cả trên android twelve trở lên :
Các phương pháp hay nhất
Nếu ứng dụng của bạn đã tuân thủ các phương pháp hay nhất cho chế độ Nghỉ và chế độ chờ ứng dụng, thì việc xử lý các tính năng quản lý nguồn mới sẽ không hề khó khăn. Tuy nhiên, một số hành six ứng dụng trước đây hoạt động tốt giờ có thể gây ra sự cố .
- Đừng cố gắng thao túng hệ thống để đưa ứng dụng của bạn vào một bộ chứa nào đó. Các phương pháp phân bộ chứa của hệ thống có thể thay đổi và mọi nhà sản xuất thiết bị đều có thể chọn viết ứng dụng phân bộ chứa bằng thuật toán riêng. Thay vào đó, hãy đảm bảo ứng dụng của bạn hoạt động theo cách phù hợp dù thuộc bộ chứa nào.
- Nếu một ứng dụng không có hoạt động trong trình chạy, thì ứng dụng đó có thể không bao giờ được nâng cấp lên bộ chứa đang hoạt động. Bạn nên thiết kế lại ứng dụng của mình để có hoạt động như vậy.
- Nếu không thể xử lý thông báo của ứng dụng, người dùng sẽ không thể kích hoạt chương trình khuyến mãi của ứng dụng vào bộ chứa đang hoạt động bằng cách tương tác với thông báo. Trong trường hợp này, bạn nên thiết kế lại một số thông báo thích hợp để người dùng có thể phản hồi. Để biết thêm về các nguyên tắc, vui lòng xem phần Mẫu thiết kế thông báo cho Material Design.
- Tương tự, nếu ứng dụng không hiển thị thông báo khi nhận được thông báo có mức độ ưu tiên cao được gửi bằng Giải pháp gửi thông báo qua đám mây của Firebase (FCM), thì người dùng sẽ không có cơ hội tương tác với ứng dụng đó và vì vậy, ứng dụng sẽ được thăng cấp lên bộ chứa đang hoạt động. Trên thực tế, mục đích duy nhất của thông báo FCM có mức độ ưu tiên cao là gửi thông báo cho người dùng nên trường hợp này không nên xảy ra. Trên 12L (API cấp 32) trở xuống, nếu bạn đánh dấu nhầm một thông báo FCM là có mức độ ưu tiên cao dù thông báo này không kích hoạt tương tác của người dùng, thì việc đó có thể khiến các thông báo trong tương lai không được ưu tiên.
Lưu ý : Nếu người dùng đóng một thông báo nhiều lần, thì hệ thống sẽ cung cấp cho người dùng lựa chọn chặn thông báo đó trong tương lai. Đừng gửi thông báo cho người dùng chỉ với mục đích cố gắng giữ cho ứng dụng của bạn trong bộ chứa đang hoạt động !- Nếu ứng dụng được chia thành nhiều gói, thì các gói đó có thể nằm trong những bộ chứa khác nhau nên sẽ có các cấp truy cập khác nhau. Bạn nên đảm bảo kiểm tra các ứng dụng như vậy với các gói được chỉ định cho nhiều bộ chứa để đảm bảo ứng dụng hoạt động đúng cách.
Thử nghiệm
Để kiểm tra xem ứng dụng của bạn được đặt vào bộ chứa nào, hãy làm theo một trong những cách sau đây :
- Gọi
getAppStandbyBucket()
.- Chạy lệnh sau đây trong một cửa sổ dòng lệnh khác :
adb shell am get-standby-bucket PACKAGE_NAME
Hệ thống sẽ điều tiết ứng dụng của bạn mỗi chi ứng dụng đó được đưa vào một Bộ chứa ứng dụng ở chế độ chờ có giá trị lớn hơn STANDBY_BUCKET_ACTIVE
( ten ) .