การจัดการพลังงานของแพลตฟอร์มด้วย Doze

หากต้องการยืดอายุการใช้งานแบตเตอรี่ของอุปกรณ์ Android อาจส่งผลต่อสถานะของอุปกรณ์ได้โดย ตรวจสอบการใช้งาน และการตื่นตัวของอุปกรณ์ แพลตฟอร์มสามารถป้อนสถานะ สลีปเพื่อหยุดกิจกรรมชั่วคราวไม่ให้ทำงานขณะที่ไม่มีการใช้งานอุปกรณ์

เกี่ยวกับ Doze

Doze จะยืดอายุการใช้งานแบตเตอรี่โดยเลื่อนเวลา CPU ในเบื้องหลังของแอปและ กิจกรรมในเครือข่ายเมื่อไม่มีการใช้งานอุปกรณ์เป็นเวลานาน

อุปกรณ์ที่ไม่มีการใช้งานใน Doze จะเข้าสู่ช่วงเวลาบำรุงรักษาเป็นระยะๆ แอปสามารถทำงานที่รอดำเนินการจนเสร็จได้ (การซิงค์ งาน เป็นต้น) จากนั้น Doze กลับมาทำงานอีกครั้ง เข้าสู่โหมดสลีปนานกว่าเดิม ตามด้วยช่วงเวลาบำรุงรักษาอีกช่วงหนึ่ง จะดำเนินต่อตามลำดับการเข้าสู่โหมดสลีป/การบำรุงรักษาที่ Doze จะเพิ่มความยาวของ ไม่มีการใช้งานในแต่ละครั้ง จนกว่าจะถึงเวลาสลีปสูงสุดสองสามชั่วโมง เลย อุปกรณ์ที่ Doze จะยังคงรับรู้การเคลื่อนไหวและจะหลุดออกจาก Doze ทันที หากตรวจพบการเคลื่อนไหว

Android 7.0 ขึ้นไปขยาย Doze เพื่อเรียกใช้ชุดการเพิ่มประสิทธิภาพที่น้อยลง ทุกครั้งที่ผู้ใช้ปิดหน้าจออุปกรณ์ แม้ในขณะที่ผู้ใช้ดำเนินการต่อ สามารถเคลื่อนที่ไปมา ช่วยให้อายุการใช้งานแบตเตอรี่ยาวนานขึ้น

โดยทั่วไปแล้ว ผู้ผลิตอุปกรณ์จะเป็นผู้ตั้งค่าบริการระบบที่สำคัญเพื่อให้ ได้รับการยกเว้นจาก Doze ผู้ใช้ยังสามารถยกเว้นบางแอปจาก Doze ได้โดยใช้ เมนูการตั้งค่า อย่างไรก็ตาม การยกเว้นแอปอาจทำให้อุปกรณ์ใช้แบตเตอรี่จนหมด โดยค่าเริ่มต้น Doze จะปิดใช้ใน AOSP สำหรับ โปรดดูรายละเอียดเกี่ยวกับการเปิดใช้ Doze ที่หัวข้อการผสานรวม Doze

ข้อกำหนดของ Doze

การสนับสนุน Doze กำหนดให้อุปกรณ์ต้องมีบริการรับส่งข้อความระบบคลาวด์ เช่น Firebase Cloud Messaging (FCM) เหตุการณ์ทริกเกอร์ภายนอก เช่น ข้อความระบบคลาวด์ สามารถปลุกแอปให้ทำงานชั่วคราวในขณะที่อุปกรณ์ยังคงอยู่ในโหมด Doze

การสนับสนุน Doze แบบเต็มจะต้องใช้ สำคัญ ตัวตรวจจับการเคลื่อนไหว (SMD) ในอุปกรณ์ แต่โหมด Doze ขนาดเล็กใน Android 7.0 ขึ้นไปไม่ต้องใช้ SMD หากเปิดใช้ Doze ในอุปกรณ์ ซึ่ง:

  • มี SMD มีการเพิ่มประสิทธิภาพ Doze อย่างสมบูรณ์ (รวมถึงน้ำหนักเบา การเพิ่มประสิทธิภาพสูงสุด)
  • ไม่มี SMD เฉพาะการเพิ่มประสิทธิภาพ Doze ขนาดเล็กเท่านั้น

วงจร Doze

Doze จะเริ่มเมื่อแพลตฟอร์มตรวจพบว่าอุปกรณ์ไม่มีการใช้งานและ สิ้นสุดลงเมื่อมีกิจกรรมเกณฑ์การออกอย่างน้อย 1 กิจกรรมเกิดขึ้น

แพลตฟอร์มจะตรวจพบว่าอุปกรณ์ไม่มีการใช้งานในกรณีต่อไปนี้

  • อุปกรณ์หยุดนิ่ง (ใช้ SMD)
  • หน้าจอของอุปกรณ์จะปิดไประยะหนึ่ง

โหมด Doze จะไม่ทำงานเมื่อเสียบอุปกรณ์ที่ใช้แบตเตอรี่เข้ากับที่ชาร์จ

ขณะงีบหลับ

แพลตฟอร์มจะพยายามทำให้ระบบอยู่ในสถานะสลีปเป็นระยะๆ กลับมาดำเนินการตามปกติอีกครั้งระหว่างช่วงเวลาบำรุงรักษาแล้วจึงส่งคืนอุปกรณ์ เข้าสู่โหมดสลีปนานกว่าเดิม สิ่งที่จะเกิดขึ้นระหว่างการนอน ข้อจำกัดมีผลอยู่:

  • แอปไม่ได้รับอนุญาตให้เข้าถึงเครือข่าย
  • ไม่สนใจ Wake Lock ของแอป
  • ระบบจะเลื่อนเวลาปลุกออกไป ไม่รวมการปลุกจากนาฬิกาปลุกและการตั้งปลุกโดยใช้ setAndAllowWhileIdle() (จำกัดที่ 1 ครั้งต่อ 15 นาทีต่อแอปขณะที่ ใน Doze) การยกเว้นนี้มีไว้สำหรับแอป (เช่น ปฏิทิน) ที่ต้องแสดง การแจ้งเตือนกิจกรรม
  • ระบบจะไม่สแกนหา Wi-Fi
  • การซิงค์ SyncAdapter รายการและการเลื่อนงาน JobScheduler รายการ จนกว่าจะถึงช่วงเวลาบำรุงรักษาครั้งถัดไป
  • แอปที่รับข้อความ SMS และ MMS จะอยู่ในรายการที่อนุญาตชั่วคราวเพื่อให้ ก็จะทำให้การดำเนินการเสร็จสมบูรณ์ได้

ออก

แพลตฟอร์มจะออกจาก Doze ในอุปกรณ์เมื่อตรวจพบสิ่งต่อไปนี้

  • การโต้ตอบของผู้ใช้กับอุปกรณ์
  • การเคลื่อนไหวของอุปกรณ์
  • หน้าจออุปกรณ์เปิด
  • นาฬิกาปลุกแบบตั้งนาฬิกาปลุก

การแจ้งเตือนจะไม่ทำให้อุปกรณ์ออกจาก Doze

Android 7.0 ขึ้นไปขยาย Doze ด้วยการเปิดใช้โหมดสลีปขนาดเล็ก ระหว่างที่ปิดหน้าจอ ก่อนที่อุปกรณ์จะไม่มีความเคลื่อนไหว

รูปที่ 1 โหมด Doze สำหรับอุปกรณ์ที่ไม่อยู่กับที่และอุปกรณ์อยู่กับที่

การทำงาน Doze Doze น้ำหนักเบา
โปรแกรมเรียกใช้ หน้าจอปิดอยู่ ขณะใช้แบตเตอรี่ อยู่กับที่ ปิดหน้าจอโดยใช้แบตเตอรี่ (ไม่ได้เสียบปลั๊ก)
ช่วงเวลา ระยะเวลาเพิ่มขึ้นเรื่อยๆ เมื่อมีการบำรุงรักษา ระยะเวลา N นาทีซ้ำโดยมีช่วงเวลาบำรุงรักษา
ข้อจำกัด ไม่มีการเข้าถึงเครือข่าย, Wake Lock หรือการสแกน GPS/Wi-Fi การปลุกและงาน/การซิงค์ เลื่อนเวลา ไม่มีการเข้าถึงเครือข่าย งาน/การซิงค์ถูกเลื่อนเวลาออกไป ยกเว้นในระหว่างช่วงเวลาบำรุงรักษา
ลักษณะการทำงาน ได้รับเฉพาะข้อความ Push ที่มีลำดับความสำคัญสูงเท่านั้น ได้รับข้อความแบบเรียลไทม์ทั้งหมด (ข้อความโต้ตอบแบบทันที การโทร ฯลฯ) ที่ได้รับ ข้อความ Push ที่มีลำดับความสำคัญสูงเปิดใช้การเข้าถึงเครือข่ายชั่วคราว
ออก ภาพเคลื่อนไหว หน้าจอเปิดอยู่ หรือการปลุกด้วยนาฬิกาปลุก เปิดหน้าจอ

การโต้ตอบกับแอปสแตนด์บาย

  • เวลาที่ใช้ใน Doze จะไม่นับรวมในสแตนด์บายแอป
  • ขณะที่อุปกรณ์อยู่ใน Doze ระบบจะอนุญาตให้แอปที่ไม่ได้ใช้งานทำงานตามปกติ การดำเนินงานอย่างน้อยวันละครั้ง

รวม Doze

เมื่อเปิดใช้ Doze แล้ว อุปกรณ์ที่รองรับ SENSOR_TYPE_SIGNIFICANT_MOTION ทำการเพิ่มประสิทธิภาพ Doze อย่างสมบูรณ์ (รวมถึงการเพิ่มประสิทธิภาพที่ไม่ซับซ้อน) อุปกรณ์ที่ไม่มี SMD จะดำเนินการเพิ่มประสิทธิภาพเฉพาะ Doze ขนาดเล็กเท่านั้น แอนดรอยด์ เลือกการเพิ่มประสิทธิภาพและผู้ให้บริการ Doze ที่เหมาะสมโดยอัตโนมัติ ไม่จำเป็นต้องกำหนดค่า

วิธีเปิดใช้ Doze สำหรับอุปกรณ์

  1. ตรวจสอบว่าอุปกรณ์ได้ติดตั้งบริการรับส่งข้อความในระบบคลาวด์ไว้แล้ว
  2. ในไฟล์การกำหนดค่าการวางซ้อนอุปกรณ์ overlay/frameworks/base/core/res/res/values/config.xml ตั้งค่าแล้ว config_enableAutoPowerModes ถึง true:
    <bool name="config_enableAutoPowerModes">true</bool>
    
    ใน AOSP พารามิเตอร์นี้จะตั้งค่าเป็น false (ปิดใช้ Doze อยู่) โดยค่าเริ่มต้น
  3. ยืนยันว่าแอปและบริการที่โหลดไว้ล่วงหน้ามีลักษณะดังนี้
  4. ยืนยันว่าบริการที่จำเป็นได้รับการยกเว้นจาก Doze แล้ว

เคล็ดลับ

ทดสอบและเพิ่มประสิทธิภาพแอป

ทดสอบแอปทั้งหมด (โดยเฉพาะแอปที่โหลดไว้ล่วงหน้า) ในโหมด Doze โปรดดูรายละเอียดที่ การทดสอบ ด้วย Doze และสแตนด์บายแอป