เพื่อปรับปรุงอายุการใช้งานแบตเตอรี่ของอุปกรณ์ 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 โดยการเปิดใช้งานโหมดสลีปแบบน้ำหนักเบาระหว่างที่ปิดหน้าจอ ก่อนที่อุปกรณ์จะไม่ได้ใช้งาน
การกระทำ | เคลิ้มหลับ | หลับในน้ำหนักเบา |
---|---|---|
สิ่งกระตุ้น | ปิดหน้าจอ ใช้แบตเตอรี่ อยู่กับที่ | ปิดหน้าจอ ใช้แบตเตอรี่ (ไม่ได้เสียบปลั๊ก) |
เวลา | เพิ่มระยะเวลาการบำรุงอย่างต่อเนื่อง | ทำซ้ำช่วงเวลา N นาทีพร้อมช่วงเวลาบำรุงรักษา |
ข้อ จำกัด | ไม่มีการเข้าถึงเครือข่าย ล็อคการปลุก หรือการสแกน GPS/Wi-Fi การเตือนและงาน/การซิงค์ถูกเลื่อนออกไป | ไม่มีการเข้าถึงเครือข่าย งาน/การซิงค์ถูกเลื่อนออกไป ยกเว้นในระหว่างช่วงเวลาการบำรุงรักษา |
พฤติกรรม | ได้รับเฉพาะข้อความแจ้งเตือนแบบพุชที่มีลำดับความสำคัญสูงเท่านั้น | ได้รับข้อความแบบเรียลไทม์ทั้งหมด (ข้อความโต้ตอบแบบทันที การโทร ฯลฯ) ข้อความแจ้งเตือนแบบพุชที่มีลำดับความสำคัญสูงช่วยให้สามารถเข้าถึงเครือข่ายชั่วคราวได้ |
ออก | การเคลื่อนไหว เปิดหน้าจอ หรือนาฬิกาปลุก | เปิดหน้าจอ |
การโต้ตอบกับแอปสแตนด์บาย
- เวลาที่ใช้ใน Doze จะไม่นับรวมในการสแตนด์บายแอป
- ขณะที่อุปกรณ์อยู่ใน Doze แอปที่ไม่ได้ใช้งานจะได้รับอนุญาตให้ทำงานตามปกติได้อย่างน้อยวันละครั้ง
การบูรณาการ Doze
เมื่อเปิดใช้งาน Doze อุปกรณ์ที่รองรับ SENSOR_TYPE_SIGNIFICANT_MOTION
จะดำเนินการเพิ่มประสิทธิภาพ Doze เต็มรูปแบบ (รวมถึงการเพิ่มประสิทธิภาพน้ำหนักเบา) อุปกรณ์ที่ไม่มี SMD จะทำการปรับแต่ง Doze แบบน้ำหนักเบาเท่านั้น Android จะเลือกการเพิ่มประสิทธิภาพ Doze ที่เหมาะสมโดยอัตโนมัติและไม่จำเป็นต้องกำหนดค่าของผู้จำหน่าย
หากต้องการเปิดใช้งาน Doze สำหรับอุปกรณ์:
- ยืนยันว่าอุปกรณ์ติดตั้งบริการส่งข้อความบนคลาวด์แล้ว
- ในไฟล์การกำหนดค่าการซ้อนทับของอุปกรณ์ overlay
overlay/frameworks/base/core/res/res/values/config.xml
ให้ตั้งconfig_enableAutoPowerModes
เป็นtrue
:<bool name="config_enableAutoPowerModes">true</bool>
ใน AOSP พารามิเตอร์นี้จะถูกตั้งค่าเป็นfalse
(ปิดใช้งาน Doze) ตามค่าเริ่มต้น - ยืนยันว่าแอพและบริการที่โหลดไว้ล่วงหน้า:
- ใช้ แนวทางการเพิ่มประสิทธิภาพการประหยัดพลังงาน สำหรับรายละเอียด โปรดดูที่ การทดสอบและการเพิ่มประสิทธิภาพแอป
หรือ
- ได้รับการยกเว้นจาก Doze และ App Standby สำหรับรายละเอียด โปรดดูที่ แอปพลิเคชันที่ได้รับการยกเว้น
- ใช้ แนวทางการเพิ่มประสิทธิภาพการประหยัดพลังงาน สำหรับรายละเอียด โปรดดูที่ การทดสอบและการเพิ่มประสิทธิภาพแอป
- ยืนยันว่าบริการที่จำเป็นได้รับการยกเว้นจาก Doze
เคล็ดลับ
- หากเป็นไปได้ ให้ใช้ FCM สำหรับ การส่งข้อความดาวน์สตรีม
- หากผู้ใช้ของคุณจะต้องเห็นการแจ้งเตือนทันที ให้ใช้ ข้อความที่มีลำดับความสำคัญสูงของ FCM
- ให้ข้อมูลเพียงพอภายใน เพย์โหลดข้อความ เริ่มต้น (เพื่อหลีกเลี่ยงการเข้าถึงเครือข่ายที่ไม่จำเป็นในภายหลัง)
- ตั้งค่าการเตือนที่สำคัญด้วย
setAndAllowWhileIdle()
และsetExactAndAllowWhileIdle()
การทดสอบและเพิ่มประสิทธิภาพแอป
ทดสอบแอปทั้งหมด (โดยเฉพาะแอปที่โหลดไว้ล่วงหน้า) ในโหมด Doze สำหรับรายละเอียด โปรดดูที่ การทดสอบด้วย Doze และ App Standby