Quản lý nguồn điện của nền tảng bằng chế độ Nghỉ

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

Giới thiệu về chế độ Nghỉ

Chế độ Nghỉ giúp kéo dài thời lượng pin bằng cách trì hoãn CPU trong nền của ứng dụng và hoạt động mạng khi một thiết bị không được sử dụng trong thời gian dài.

Các thiết bị ở trạng thái rảnh trong chế độ Nghỉ sẽ chuyển sang thời gian bảo trì theo định kỳ, trong thời gian này ứng dụng có thể hoàn tất công việc đang chờ xử lý (đồng bộ hoá, công việc, v.v.). Chế độ nghỉ sau đó sẽ tiếp tục ngủ trong một khoảng thời gian dài hơn, sau đó là một thời gian bảo trì khác. Chiến lược phát hành đĩa đơn nền tảng tiếp tục chuỗi chế độ ngủ/duy trì chế độ Nghỉ, tăng thời lượng rảnh mỗi lần cho đến khi đạt thời gian ngủ tối đa là vài giờ. Hoàn toàn không thì một thiết bị trong chế độ Nghỉ vẫn nhận biết được chuyển động và ngay lập tức thoát khỏi chế độ Nghỉ nếu phát hiện thấy chuyển động.

Android 7.0 trở lên mở rộng chế độ Doze (Nghỉ) để kích hoạt bộ tính năng tối ưu hoá 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 xung quanh, giúp kéo dài tuổi thọ pin.

Các dịch vụ hệ thống quan trọng thường được nhà sản xuất thiết bị thiết lập để miễn trừ khỏi chế độ Nghỉ. Người dùng cũng có thể miễn trừ một số ứng dụng cụ thể khỏi chế độ Nghỉ bằng cách sử dụng Trình đơn cài đặt. Tuy nhiên, việc miễn trừ các ứng dụng có thể gây tiêu hao pin trên thiết bị. Theo mặc định, chế độ Nghỉ bị tắt trong AOSP; với thông tin chi tiết về cách bật chế độ Nghỉ, vui lòng xem nội dung Tích hợp chế độ Nghỉ.

Yêu cầu về chế độ nghỉ

Tính năng hỗ trợ chế độ Nghỉ yêu cầu thiết bị phải có dịch vụ nhắn tin qua đám mây, chẳng hạn như Firebase Gửi thông báo qua đám mây (FCM). Các sự kiện kích hoạt bên ngoài, chẳng hạn như thư 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ế độ Nghỉ.

Hỗ trợ chế độ Nghỉ đầy đủ cũng yêu cầu quan trọng máy phát hiện chuyển động (SMD) trên thiết bị; tuy nhiên, chế độ Nghỉ nhẹ trong Android 7.0 trở lên không yêu cầu SMD. Nếu bạn bật chế độ Nghỉ trên thiết bị rằng:

  • Có SMD, tối ưu hoá chế độ Nghỉ hoàn toàn (bao gồm tối ưu hoá).
  • Không có SMD, chỉ có các chế độ tối ưu hoá chế độ Nghỉ nhẹ.

Vòng đời nghỉ

Chế độ nghỉ 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 diễn ra một hoặc nhiều hoạt động tiêu chí thoát.

Nền tảng phát hiện thấy một thiết bị ở trạng thái rảnh khi:

  • Thiết bị ở trạng thái tĩnh (sử dụng SMD).
  • Màn hình thiết bị sẽ tắt trong một khoảng thời gian.

Chế độ nghỉ không hoạt động trong khi một thiết bị chạy bằng pin đang được cắm vào bộ sạc điện.

Trong chế độ Nghỉ

Nền tảng này sẽ cố gắng định kỳ duy trì hệ thống ở trạng thái ngủ tiếp tục hoạt động bình thường trong thời gian bảo trì rồi trả lại thiết bị ngủ trong khoảng thời gian lặp lại dài hơn. Trong khi ngủ, các lệnh sau đây các hạn chế đang hoạt động:

  • Ứng dụng không được phép truy cập mạng.
  • Đã bỏ qua khoá ở chế độ thức của ứng dụng.
  • Các chuông báo bị trì hoãn. Không bao gồm các chuông báo và chuông báo trên đồng hồ báo thức được đặt bằng setAndAllowWhileIdle() (giới hạn ở mức 1/15 phút cho mỗi ứng dụng trong khi trong chế độ Nghỉ). Chính sách 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 sự kiện.
  • Tính năng quét tìm Wi-Fi sẽ không được thực hiện.
  • Quá trình đồng bộ hoá SyncAdapterJobScheduler công việc bị trì hoãn cho đến lần bảo trì tiếp theo.
  • Các ứng dụng nhận tin nhắn SMS và MMS sẽ được đưa vào danh sách cho phép tạm thời để họ có thể hoàn tất quá trình xử lý.

Thoát

Nền tảng này sẽ thoát khỏi chế độ Nghỉ khi thiết bị khi phát hiện:

  • Tương tác người dùng với thiết bị
  • Di chuyển thiết bị
  • Màn hình thiết bị bật
  • Chuông báo sắp tới

Thông báo không khiến thiết bị thoát khỏi chế độ Nghỉ.

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

Hình 1. Chế độ nghỉ cho các thiết bị không cố định và thiết bị cố định.

Hành động Nghỉ Giấc ngủ nhẹ
Kích hoạt Màn hình đang tắt, đang chạy bằng pin, tại chỗ Màn hình đang tắt, chạy bằng pin (đã rút phích cắm)
Thời gian Tăng thời gian bảo trì liên tiếp Khoảng thời gian N phút lặp lại với thời gian bảo trì
Quy định hạn chế Không có truy cập mạng, khóa chế độ thức hoặc quét tìm GPS/Wi-Fi; chuông báo và công việc/đồng bộ hoá bị hoãn Không có quyền truy cập mạng; công việc/đồng bộ hoá 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 Tất cả tin nhắn theo thời gian thực (tin nhắn tức thì, cuộc gọi, v.v.) nhận được; nội dung thông báo đẩy có mức độ ưu tiên cao cho phép truy cập mạng tạm thời
Thoát Chuyển động, màn hình bật hoặc chuông báo trên đồng hồ báo thức Màn hình bật

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

  • Thời gian ở chế độ Nghỉ không được tính vào Chế độ chờ ứng dụng.
  • Khi thiết bị ở chế độ Nghỉ, các ứng dụng ở trạng thái rảnh sẽ được phép hoạt động bình thường hoạt động ít nhất một lần mỗi ngày.

Tích hợp chế độ Nghỉ

Khi bật chế độ Nghỉ, các thiết bị hỗ trợ SENSOR_TYPE_SIGNIFICANT_MOTION thực hiện tối ưu hoá chế độ Nghỉ hoàn toàn (bao gồm cả tối ưu hoá dung lượng nhẹ); các thiết bị không có SMD chỉ thực hiện các hoạt động tối ưu hoá chế độ Nghỉ nhẹ. của Android tự động chọn nhà cung cấp và các biện pháp tối ưu hoá chế độ Nghỉ cấu hình là không cần thiết.

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

Mẹo

Kiểm thử và tối ưu hoá ứng dụng

Kiểm thử tất cả ứng dụng (đặc biệt là các ứng dụng tải trước) ở chế độ Nghỉ. Để biết thông tin chi tiết, hãy tham khảo Thử nghiệm với chế độ Nghỉ và Chế độ chờ ứng dụng.