Tắt khoá chế độ thức
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.
Trang này mô tả cách giải phóng khoá đánh thức do ứng dụng của bạn giữ. Điều quan trọng là bạn phải giải phóng khoá đánh thức ngay khi ứng dụng của bạn dùng xong để tránh làm hao pin.
Giải phóng một khoá đánh thức đang hoạt động
Để giải phóng một khoá đánh thức đang hoạt động, hãy gọi phương thức release()
của khoá đó. Khi đó, yêu cầu của bạn sẽ được giải phóng cho CPU.
Ví dụ: đoạn mã sau đây thu nhận một khoá đánh thức, thực hiện một số thao tác rồi giải phóng khoá đánh thức:
Kotlin
@Throws(MyException::class)
fun doSomethingAndRelease() {
wakeLock.apply {
try {
acquire()
doTheWork()
} finally {
release()
}
}
}
Java
void doSomethingAndRelease() throws MyException {
try {
wakeLock.acquire();
doTheWork();
} finally {
wakeLock.release();
}
}
Hãy nhớ huỷ bỏ khoá chế độ thức ngay khi không còn cần thiết nữa. Ví dụ: nếu bạn sử dụng khoá chế độ thức để cho phép hoàn thành một tác vụ ở chế độ nền, hãy nhớ huỷ bỏ khoá ngay khi tác vụ hoàn tất.
Các điểm chính về mã này
Trong ví dụ này, phương thức doTheWork()
có thể gửi một ngoại lệ. Vì lý do này, mã sẽ giải phóng khoá chế độ thức trong khối finally
để đảm bảo khoá chế độ thức được giải phóng cho dù có ngoại lệ hay không. Điều rất quan trọng là bạn phải đảm bảo mọi khoá chế độ thức mà bạn đặt đều được giải phóng, vì vậy, bạn cần kiểm tra mọi đường dẫn mã có thể để đảm bảo khoá chế độ thức không bị bỏ lại ở trạng thái hoạt động trên bất kỳ đường dẫn nào.
Xem thêm
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-08-24 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-24 UTC."],[],[],null,["# Release a wake lock\n\nThis page describes how to release a wake lock held by your app.\nIt's important to release a wake lock as soon as your app is\nfinished using it to avoid draining the battery.\n\nRelease an active wake lock\n---------------------------\n\nTo release an active wake lock, call its [`release()`](/reference/android/os/PowerManager.WakeLock#release()) method. Doing so\nreleases your claim to the CPU.\n\nFor example, the following code [acquires a wake lock](/develop/background-work/background-tasks/awake/wakelock/set),\ndoes some work, then releases the wake lock:\n\n\n### Kotlin\n\n```kotlin\n@Throws(MyException::class)\nfun doSomethingAndRelease() {\n wakeLock.apply {\n try {\n acquire()\n doTheWork()\n } finally {\n release()\n }\n }\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/misc/src/main/java/com/example/snippets/backgroundwork/WakeLockSnippetsKotlin.kt#L42-L52\n```\n\n### Java\n\n```java\nvoid doSomethingAndRelease() throws MyException {\n try {\n wakeLock.acquire();\n doTheWork();\n } finally {\n wakeLock.release();\n }\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/misc/src/main/java/com/example/snippets/backgroundwork/WakeLockSnippetsJava.java#L27-L34\n```\n\n\u003cbr /\u003e\n\nMake sure to release wake locks as soon as they are no longer needed. For\nexample, if you use a wake lock to allow a background task to finish, make sure\nto release the lock as soon as the task finishes.\n\n### Key points about this code\n\nIn this example, the method `doTheWork()` might throw an exception. For this\nreason, the code releases the wake lock in the `finally` block, to make sure\nthe wake lock is released whether or not an exception is thrown. It's very\nimportant to make sure every wake lock you set is released, so you need to\ncheck every possible code path to make sure the wake lock isn't left active\non any of them.\n\nSee also\n--------\n\n- [Set a wake lock](/develop/background-work/background-tasks/awake/wakelock/set)"]]