Quản lý năng lượng nền tảng

Để cải thiện thời lượng pin của thiết bị, Android có thể tác động đến trạng thái của thiết bị bằng cách theo dõi việc sử dụng và trạng thái của thiết bị. Nền tảng có thể chuyển sang trạng thái ngủ để tạm dừng các hoạt động đang chạy trong khi thiết bị không được sử dụng.

Ngủ gật

Ngủ sâu kéo dài tuổi thọ pin bằng cách trì hoãn hoạt động mạng và CPU nền của ứng dụng khi không sử dụng thiết bị trong thời gian dài.

Các thiết bị không hoạt động trong Chế độ Ngủ sâu định kỳ vào cửa sổ bảo trì, trong đó các ứng dụng có thể hoàn thành công việc đang chờ xử lý (đồng bộ hóa, công việc, v.v.). Sau đó, Doze tiếp tục ngủ trong một khoảng thời gian dài hơn, sau đó là một khoảng thời gian bảo trì khác. Nền tảng này tiếp tục trình tự ngủ/bảo trì Doze, mỗi lần tăng thời lượng không hoạt động cho đến khi đạt được thời gian ngủ tối đa là vài giờ. Tại mọi thời điểm, thiết bị ở chế độ Ngủ sâu vẫn nhận biết được chuyển động và ngay lập tức rời khỏi Chế độ Ngủ sâu nếu phát hiện thấy chuyển động.

Android 7.0 trở lên mở rộng chế độ Ngủ sâu để kích hoạt một loạt tối ưu hóa nhẹ hơn mỗi khi người dùng tắt màn hình thiết bị, ngay cả khi người dùng tiếp tục di chuyển, giúp kéo dài thời lượng pin hơn.

Các dịch vụ hệ thống quan trọng thường được các nhà sản xuất thiết bị thiết lập để được miễn chế độ Ngủ sâu. Người dùng cũng có thể miễn các ứng dụng cụ thể khỏi chế độ Ngủ sâu bằng menu Cài đặt. Tuy nhiên, việc miễn ứng dụng có thể gây hao pin trên thiết bị. Theo mặc định, Chế độ Ngủ sâu bị tắt trong AOSP; để biết chi tiết về cách bật Doze, hãy xem Tích hợp Doze .

Yêu cầu ngủ gật

Hỗ trợ Doze yêu cầu thiết bị phải có dịch vụ nhắn tin trên đám mây, chẳng hạn như Firebase Cloud Messaging (FCM) . Các sự kiện kích hoạt bên ngoài, chẳng hạn như tin nhắn trên đám mây, có thể tạm thời đánh thức các ứng dụng để hoạt động trong khi thiết bị vẫn ở chế độ Ngủ đông.

Hỗ trợ Full Doze cũng yêu cầu một bộ phát hiện chuyển động (SMD) đáng kể trên thiết bị; tuy nhiên, chế độ Doze nhẹ trong Android 7.0 trở lên không yêu cầu SMD. Nếu Chế độ Ngủ sâu được bật trên thiết bị:

  • Có SMD, tối ưu hóa Doze đầy đủ xảy ra (bao gồm tối ưu hóa nhẹ).
  • Không có SMD, chỉ xảy ra tối ưu hóa Doze nhẹ.

Vòng đời ngủ gật

Ngủ sâu bắt đầu khi nền tảng phát hiện thấy thiết bị ở trạng thái rảnh và kết thúc khi xảy ra một hoặc nhiều hoạt động tiêu chí thoát.

Phát hiện

Nền tảng phát hiện thiết bị không hoạt động khi:

  • Thiết bị đứng yên (sử dụng SMD).
  • Màn hình thiết bị tắt trong một khoảng thời gian.

Chế độ Ngủ sâu không hoạt động khi thiết bị chạy bằng pin được cắm vào bộ sạc điện.

Trong lúc ngủ gật

Nền tảng này cố gắng giữ hệ thống ở trạng thái ngủ, định kỳ tiếp tục các hoạt động bình thường trong thời gian bảo trì, sau đó đưa thiết bị về trạng thái ngủ trong thời gian lặp lại lâu hơn. Trong khi ngủ, các hạn chế sau được kích hoạt:

  • Ứng dụng không được phép truy cập mạng.
  • Khóa chế độ thức của ứng dụng bị bỏ qua.
  • Báo động được trì hoãn. Không bao gồm các báo thức trên đồng hồ báo thức và các báo thức được đặt bằng setAndAllowWhileIdle() (giới hạn 1 trong 15 phút cho mỗi ứng dụng khi ở chế độ Ngủ sâu). Sự miễn trừ này dành cho các ứng dụng (chẳng hạn như Lịch) phải hiển thị thông báo nhắc nhở sự kiện.
  • Quét Wi-Fi không được thực hiện.
  • Đồng bộ hóa SyncAdapter và các công việc JobScheduler được hoãn lại cho đến đợt bảo trì tiếp theo.
  • Các ứng dụng nhận tin nhắn SMS và MMS được đưa vào danh sách trắng tạm thời để chúng có thể hoàn tất quá trình xử lý.

Lối ra

Nền tảng sẽ thoát thiết bị khỏi Chế độ Ngủ sâu khi phát hiện thấy:

  • Tương tác của người dùng với thiết bị
  • Chuyển động của thiết bị
  • Màn hình thiết bị bật
  • Báo động sắp xảy raĐồng hồ báo động

Thông báo không khiến thiết bị thoát khỏi chế độ Ngủ sâu.

Android 7.0 trở lên mở rộng Doze bằng cách bật chế độ ngủ nhẹ trong khi màn hình tắt, trước khi thiết bị ở chế độ rảnh.

Hình 1. Chế độ ngủ gật cho các thiết bị cố định và cố định
Hoạt động Ngủ gật Ngủ gật nhẹ
Cò súng Tắt màn hình, đang dùng pin, đứng yên Tắt màn hình, đang dùng pin (đã rút phích cắm)
Thời gian Tăng thời gian liên tục khi bảo trì Khoảng thời gian N phút lặp đi lặp lại với các khoảng thời gian bảo trì
Những hạn chế Không có quyền truy cập mạng, khóa chế độ thức hoặc quét GPS/Wi-Fi; báo động và công việc/đồng bộ bị trì hoãn Không có quyền truy cập mạng; công việc/đồng bộ bị trì hoãn ngoại trừ trong thời gian bảo trì
Hành vi Chỉ nhận được tin nhắn thông báo đẩy có mức độ ưu tiên cao Đã nhận được tất cả tin nhắn theo thời gian thực (tin nhắn tức thời, cuộc gọi, v.v.); tin nhắn thông báo đẩy ưu tiên cao cho phép truy cập mạng tạm thời
Lối ra Cảnh báo chuyển động, màn hình bật hoặc đồng hồ báo thức Bật màn hình

Tương tác với chế độ chờ ứng dụng

  • Thời gian ở chế độ Ngủ sâu không được tính vào Chế độ chờ ứng dụng.
  • Khi thiết bị ở chế độ Ngủ sâu, các ứng dụng không hoạt động được phép thực hiện các hoạt động bình thường ít nhất một lần mỗi ngày.

Tích hợp ngủ gật

Khi bật chế độ Ngủ sâu, các thiết bị hỗ trợ SENSOR_TYPE_SIGNIFICANT_MOTION sẽ thực hiện tối ưu hóa Chế độ Ngủ sâu đầy đủ (bao gồm cả các tối ưu hóa nhẹ); các thiết bị không có SMD chỉ thực hiện tối ưu hóa Doze nhẹ. Android tự động chọn các tối ưu hóa Doze thích hợp và không cần cấu hình nhà cung cấp.

Để bật Doze cho một thiết bị:

  1. Xác nhận rằng thiết bị đã cài đặt dịch vụ nhắn tin đám mây.
  2. Trong tệp cấu hình lớp phủ thiết overlay/frameworks/base/core/res/res/values/config.xml , đặt config_enableAutoPowerModes thành true :
    <bool name="config_enableAutoPowerModes">true</bool>
    
    Trong AOSP, tham số này được đặt thành false (Tắt chế độ Doze) theo mặc định.
  3. Xác nhận rằng các ứng dụng và dịch vụ được tải sẵn:
  4. Xác nhận rằng các dịch vụ cần thiết được miễn khỏi Doze.

Lời khuyên

Kiểm tra và tối ưu hóa ứng dụng

Kiểm tra tất cả các ứng dụng (đặc biệt là các ứng dụng được tải sẵn) ở chế độ Ngủ sâu. Để biết chi tiết, hãy tham khảo Kiểm tra với chế độ Ngủ sâu và Chế độ chờ ứng dụng .