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

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

เคลิ้มหลับ

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

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

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

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

ข้อกำหนดในการงีบหลับ

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

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

  • มี SMD การเพิ่มประสิทธิภาพ Doze แบบเต็มเกิดขึ้น (รวมถึงการเพิ่มประสิทธิภาพที่มีน้ำหนักเบา)
  • ไม่มี SMD มีเพียงการเพิ่มประสิทธิภาพ Doze แบบเบาเท่านั้นที่เกิดขึ้น

วงจรชีวิตหลับใหล

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

การตรวจจับ

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

  • อุปกรณ์อยู่กับที่ (ใช้ SMD)
  • หน้าจออุปกรณ์ปิดอยู่เป็นระยะเวลาหนึ่ง

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

ระหว่างงีบ

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

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

ทางออก

แพลตฟอร์มออกจากอุปกรณ์จาก Doze เมื่อตรวจพบ:

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

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

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

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

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

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

การรวม Doze

เมื่อเปิดใช้งาน Doze อุปกรณ์ที่รองรับ SENSOR_TYPE_SIGNIFICANT_MOTION จะทำการปรับ Doze ให้เหมาะสมอย่างสมบูรณ์ (รวมถึงการเพิ่มประสิทธิภาพแบบเบา) อุปกรณ์ที่ไม่มี SMD จะทำการเพิ่มประสิทธิภาพ Doze แบบเบาเท่านั้น Android จะเลือกการเพิ่มประสิทธิภาพ 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 และ App Standby