การล็อกการตื่นบางส่วนเป็นกลไกใน 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 ให้เป็นภาพเหตุการณ์ที่เกี่ยวข้องกับพลังงาน
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- เฟรมที่ค้าง
- เรียกใช้การเปรียบเทียบในการผสานรวมอย่างต่อเนื่อง
- สร้างและวัดโปรไฟล์พื้นฐานโดยไม่ต้องใช้การทดสอบประสิทธิภาพแบบแมโคร