Lỗi xảy ra với khóa chế độ thức một phần
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Khoá chế độ thức một phần là cơ chế trong API PowerManager
cho phép các nhà phát triển tiếp tục chạy CPU sau khi màn hình của thiết bị tắt (cho dù do hệ thống hết thời gian chờ hay người dùng nhấn nút nguồn). Ứng dụng của bạn có được khoá chế độ thức một phần bằng cách gọi acquire()
với cờ PARTIAL_WAKE_LOCK
hoặc bằng cách sử dụng các API khác có chức năng khoá chế độ thức.
Khoá chế độ thức một phần sẽ bị lỗi nếu nó bị khoá trong thời gian dài khi ứng dụng đang chạy ở chế độ nền (nghĩa là người dùng không thể nhìn thấy phần nào của ứng dụng). Tình trạng này sẽ làm tiêu hao pin của thiết bị vì nó ngăn thiết bị chuyển sang trạng thái nguồn thấp hơn. Bạn chỉ nên sử dụng khoá chế độ thức một phần khi cần thiết và mở khoá ngay khi không còn cần dùng nữa.
Nếu ứng dụng của bạn bị lỗi một phần khoá chế độ thức, bạn có thể sử dụng hướng dẫn trong trang này để chẩn đoán và khắc phục sự cố.
Phát hiện vấn đề
Không phải lúc nào bạn cũng biết khóa chế độ thức một phần trong ứng dụng của mình bị lỗi.
Nếu bạn đã phát hành ứng dụng, thì Android vitals có thể giúp bạn nhận biết được vấn đề đó.
Android vitals
Android vitals có thể giúp cải thiện hiệu suất của ứng dụng bằng cách cảnh báo cho bạn qua Play Console khi ứng dụng của bạn đang ở trạng thái lỗi với khoá chế độ thức một phần. Android vitals báo cáo khoá chế độ thức một phần gặp lỗi khi chế độ này kéo dài trong thời gian ít nhất một tiếng trong một khoảng thời gian 24 giờ.
Số phiên pin hiển thị là số liệu tổng hợp của tất cả người dùng được đo lường trong ứng dụng. Để biết thêm thông tin về cách Google Play thu thập dữ liệu Android vitals, vui lòng xem tài liệu
Play Console.
Khi biết rằng ứng dụng của mình bị lỗi khoá chế độ thức một phần, bước tiếp theo bạn cần làm là giải quyết vấn đề.
Khắc phục vấn đề
Vì khoá chế độ thức có thể làm tiêu hao pin thiết bị, nên bạn không nên sử dụng khoá chế độ thức nếu có phương án thay thế. Tài liệu Chọn API phù hợp để giữ cho thiết bị luôn thức có thể giúp bạn tìm ra giải pháp tốt nhất cho ứng dụng của mình.
Nếu bạn cần sử dụng khoá chế độ thức, hãy làm theo các phương pháp hay nhất về khoá chế độ thức để đảm bảo khoá chế độ thức không làm giảm hiệu suất của thiết bị. Cụ thể, hãy đảm bảo rằng mọi thiết bị bạn nhận được đều được phát hành và phát hành khoá nhanh nhất có thể.
Sau khi khắc phục sự cố về mã, bạn có thể xác minh các bản sửa lỗi bằng cách sử dụng các công cụ gỡ lỗi khoá chế độ thức cục bộ.
Xem thêm
Đề xuất cho bạn
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 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)"]]