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

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

เคลิ้มหลับ

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

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

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

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

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

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

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

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

วงจรชีวิตของการหลับใน

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

การตรวจจับ

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

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

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

ระหว่างที่โดซ

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

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

ออก

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

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

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

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

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

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

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

การบูรณาการ Doze

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

หากต้องการเปิดใช้งาน Doze สำหรับอุปกรณ์:

  1. ยืนยันว่าอุปกรณ์ติดตั้งบริการส่งข้อความบนคลาวด์แล้ว
  2. ในไฟล์การกำหนดค่าการซ้อนทับของอุปกรณ์ overlay 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