Wake Lock แบบต่อเนื่องบางส่วน

การล็อกการตื่นบางส่วนเป็นกลไกใน PowerManager API ที่ช่วยให้นักพัฒนาแอปสามารถทำให้ CPU ทำงานต่อไปได้หลังจากที่จอแสดงผลของอุปกรณ์ปิดลง (ไม่ว่าจะเกิดจากระบบหมดเวลาหรือผู้ใช้กดปุ่มเปิด/ปิด) แอปของคุณจะรับ Wake Lock บางส่วนโดยการเรียกใช้ acquire() ด้วย Flag PARTIAL_WAKE_LOCK การล็อกการตื่นบางส่วนจะค้างหากมีการล็อกไว้เป็นเวลานานขณะที่แอปของคุณทำงานอยู่เบื้องหลัง (ผู้ใช้ไม่เห็นส่วนใดของแอป) เงื่อนไขนี้จะทำให้แบตเตอรี่ของอุปกรณ์หมดเร็วเนื่องจากป้องกันไม่ให้อุปกรณ์เข้าสู่สถานะพลังงานต่ำ คุณควรใช้การล็อกการตื่นบางส่วนเฉพาะเมื่อจำเป็นเท่านั้น และปล่อยออกทันทีที่ไม่จำเป็นแล้ว

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

ตรวจหาปัญหา

คุณอาจไม่ทราบว่าแอปของคุณค้างอยู่ที่การล็อกบางส่วน หากคุณเผยแพร่แอปแล้ว Android Vitals จะช่วยให้คุณทราบถึงปัญหา

Android Vitals

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

คําจํากัดความของเซสชันแบตเตอรี่จะขึ้นอยู่กับเวอร์ชันแพลตฟอร์ม

  • ใน Android 10 เซสชันแบตเตอรี่เป็นการรวมรายงานแบตเตอรี่ทั้งหมดที่ได้รับภายในระยะเวลา 24 ชั่วโมง รายงานแบตเตอรี่หมายถึงช่วงเวลาระหว่างการชาร์จแบตเตอรี่ 2 ครั้งจากต่ำกว่า 20% ถึงมากกว่า 80% หรือจากระดับการชาร์จใดก็ตามถึง 100%
  • ใน Android 11 เซสชันแบตเตอรี่คือระยะเวลา 24 ชั่วโมงแบบคงที่

จํานวนเซสชันแบตเตอรี่ที่แสดงคือข้อมูลรวมของผู้ใช้ทั้งหมดที่วัดในแอป ดูข้อมูลเกี่ยวกับวิธีที่ Google Play รวบรวมข้อมูล Android Vitals ได้ที่เอกสารประกอบของ Play Console

เมื่อทราบว่าแอปของคุณมีการล็อกการตื่นบางส่วนค้างไว้มากเกินไป ขั้นตอนถัดไปคือการแก้ไขปัญหา

แก้ไขปัญหา

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

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

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

  • dumpsys - เครื่องมือที่ให้ข้อมูลเกี่ยวกับสถานะของบริการระบบในอุปกรณ์ หากต้องการดูสถานะบริการพลังงาน ซึ่งรวมถึงรายการการปลุก ให้เรียกใช้ adb shell dumpsys power

  • Battery Historian - เครื่องมือที่แยกวิเคราะห์เอาต์พุตของรายงานข้อบกพร่อง Android ให้เป็นภาพเหตุการณ์ที่เกี่ยวข้องกับพลังงาน