Wake Lock แบบต่อเนื่องบางส่วน
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
การล็อกการตื่นบางส่วนเป็นกลไกใน PowerManager
API ที่ช่วยให้นักพัฒนาแอปสามารถทำให้ CPU ทำงานต่อไปได้หลังจากที่จอแสดงผลของอุปกรณ์ปิดลง (ไม่ว่าจะเกิดจากระบบหมดเวลาหรือผู้ใช้กดปุ่มเปิด/ปิด) แอปของคุณจะรับการล็อกจากการตื่นบางส่วนโดยการเรียกใช้ acquire()
ด้วย Flag PARTIAL_WAKE_LOCK
หรือใช้ API อื่นๆ ที่ได้รับสิทธิ์การล็อกจากการตื่น
การล็อกการตื่นบางส่วนจะค้างหากมีการล็อกไว้เป็นเวลานานขณะที่แอปของคุณทำงานอยู่เบื้องหลัง (ผู้ใช้ไม่เห็นส่วนใดของแอป) เงื่อนไขนี้จะทำให้แบตเตอรี่ของอุปกรณ์หมดเร็วเนื่องจากป้องกันไม่ให้อุปกรณ์เข้าสู่สถานะพลังงานต่ำ คุณควรใช้การล็อกการตื่นบางส่วนเฉพาะเมื่อจำเป็นเท่านั้น และปล่อยออกทันทีที่ไม่จำเป็นแล้ว
หากแอปของคุณมีการล็อกการตื่นบางส่วนค้างอยู่ คุณสามารถใช้คำแนะนำในหน้านี้เพื่อวินิจฉัยและแก้ไขปัญหา
ตรวจหาปัญหา
คุณอาจไม่ทราบเสมอไปว่าการล็อกบางส่วนของแอปค้างอยู่
หากคุณเผยแพร่แอปแล้ว Android Vitals จะช่วยให้คุณทราบถึงปัญหา
Android Vitals
Android Vitals ช่วยปรับปรุงประสิทธิภาพของแอปได้โดยแจ้งเตือนคุณผ่าน Play Console เมื่อแอปแสดงการล็อกการตื่นบางส่วนค้าง Android Vitals จะรายงานว่าการทำงานขณะล็อกอยู่บ้างติดขัดเมื่อเกิดการทำงานขณะล็อกอยู่บ้างนานอย่างน้อย 1 ชั่วโมงขณะอยู่ในเบื้องหลังภายในระยะเวลา 24 ชั่วโมง
จํานวนเซสชันแบตเตอรี่ที่แสดงคือข้อมูลรวมของผู้ใช้ทั้งหมดที่วัดของแอป ดูข้อมูลเกี่ยวกับวิธีที่ Google Play รวบรวมข้อมูล Android Vitals ได้ที่เอกสารประกอบของ Play Console
เมื่อทราบว่าแอปของคุณล็อกการตื่นบางส่วนค้างอยู่ ขั้นตอนถัดไปคือการแก้ไขปัญหา
แก้ไขปัญหา
คุณไม่ควรใช้การล็อกที่ปลุกอุปกรณ์ไว้หากมีวิธีอื่น เนื่องจากอาจทำให้แบตเตอรี่ของอุปกรณ์หมดเร็ว เอกสารประกอบเกี่ยวกับเลือก API ที่เหมาะสมเพื่อทำให้อุปกรณ์ทำงานต่อไปจะช่วยคุณค้นหาโซลูชันที่ดีที่สุดสำหรับแอป
หากจำเป็นต้องใช้การล็อกจากการตื่น ให้ทำตามแนวทางปฏิบัติแนะนำสำหรับการล็อกจากการตื่นเพื่อให้แน่ใจว่าการล็อกจากการตื่นจะไม่ส่งผลเสียต่อประสิทธิภาพของอุปกรณ์ โดยเฉพาะอย่างยิ่ง ให้ตรวจสอบว่าอุปกรณ์ทุกเครื่องที่คุณได้รับนั้นปลดล็อกแล้ว และปลดล็อกโดยเร็วที่สุด
หลังจากแก้ไขปัญหาในโค้ดแล้ว คุณสามารถยืนยันการแก้ไขได้โดยใช้เครื่องมือแก้ไขข้อบกพร่องการล็อกการปลุกในเครื่อง
ดูเพิ่มเติม
แนะนำสำหรับคุณ
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Stuck partial wake locks\n\nPartial wake locks are a mechanism in the\n[`PowerManager`](/reference/android/os/PowerManager) API\nthat lets developers keep the CPU running after a device's display turns off\n(whether due to system timeout or the user pressing the power button). Your\napp acquires a partial wake lock by calling\n[`acquire()`](/reference/android/os/PowerManager.WakeLock#acquire())\nwith the\n[`PARTIAL_WAKE_LOCK`](/reference/android/os/PowerManager#PARTIAL_WAKE_LOCK)\nflag, or by using [other APIs that acquire wake locks](/develop/background-work/background-tasks/awake/wakelock/identify-wls).\nA partial wake lock becomes *stuck* if it is held for a long time while\nyour app is running in the\nbackground (no part of your app is visible to the user). This condition drains\nthe device's battery because it prevents the device from entering lower power\nstates. Partial wake locks should be used only when necessary and released as\nsoon as no longer needed.\n\nIf your app has a stuck partial wake lock, you can use the guidance in this page\nto diagnose and fix the problem.\n\nDetect the problem\n------------------\n\nYou may not always know that your app's partial wake locks are stuck.\nIf you have already published your app,\nAndroid vitals can help make you aware of the problem.\n\n### Android vitals\n\nAndroid vitals can help improve your app's performance by alerting you via the\n[Play Console](https://play.google.com/console/) when your app is\nexhibiting stuck partial wake locks. Android vitals reports partial wake locks\nas stuck when at least one, hour-long, while in the background, partial wake\nlock occurs in a 24-hour period.\n\nThe number of battery sessions displayed is an aggregate for all measured users\nof the app. For information on how Google Play collects Android vitals data, see\nthe\n[Play Console](https://support.google.com/googleplay/android-developer/answer/7385505)\ndocumentation.\n\nOnce you're aware that your app has stuck partial wake locks,\nyour next step is to address the issue.\n\nFix the problem\n---------------\n\nBecause wake locks can drain the device battery, you shouldn't use wake\nlocks if there's an alternative. The\n[Choose the right API to keep the device awake](/develop/background-work/background-tasks/awake)\ndocumentation can help you find the best solution for your app.\n\nIf you do need to use a wake lock, [follow wake lock best practices](/develop/background-work/background-tasks/awake/wakelock/best-practices)\nto make sure your wake locks don't hurt device efficiency. In particular,\nmake sure every device you acquire is released, and release the lock as quickly\nas possible.\n\nAfter fixing the problem in code, you can verify your fixes by using [local\nwake lock debugging tools](/develop/background-work/background-tasks/awake/wakelock/debug-locally).\n\nSee also\n--------\n\n- [Excessive partial wake locks (beta)](/topic/performance/vitals/excessive-wakelock)\n- [Wake lock documentation](/develop/background-work/background-tasks/awake/wakelock)\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [Frozen frames](/topic/performance/vitals/render#frozen-frames)\n- [Run benchmarks in Continuous Integration](/topic/performance/benchmarking/benchmarking-in-ci)\n- [Create and measure Baseline Profiles without Macrobenchmark](/topic/performance/baselineprofiles/manually-create-measure)"]]