שחרור של נעילת מצב שינה
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
בדף הזה מוסבר איך לבטל את נעילת ההשכמה שהאפליקציה מחזיקה.
חשוב לבטל את נעילת ההשכמה ברגע שהאפליקציה סיימה להשתמש בה, כדי למנוע ניקוז של הסוללה.
שחרור של חסימת מצב שינה פעילה
כדי לשחרר wake lock פעיל, צריך לבצע קריאה ל-method release()
שלו. כך
התביעה שלכם תשוחרר למעבד.
לדוגמה, הקוד הבא רוכש wake lock, מבצע פעולה מסוימת ואז משחרר את ה-wake lock:
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();
}
}
חשוב לבטל את חסימות מצב השינה ברגע שהן לא נחוצות יותר. לדוגמה, אם משתמשים בחסימת מצב השינה כדי לאפשר למשימה ברקע להסתיים, חשוב לשחרר את החסימה ברגע שהמשימה מסתיימת.
נקודות חשובות לגבי הקוד הזה
בדוגמה הזו, יכול להיות שהשיטה doTheWork()
תגרום לחריגה. לכן, הקוד משחרר את נעילת ההשכמה בבלוק finally
, כדי לוודא שנעילת ההשכמה משוחררת בין אם נוצר חריג ובין אם לא. חשוב מאוד לוודא שכל נעילת השהיה שהגדרתם משוחררת, ולכן צריך לבדוק כל נתיב קוד אפשרי כדי לוודא שנעילת ההשהיה לא נשארת פעילה באף אחד מהם.
למידע נוסף
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-08-24 (שעון UTC).
[null,null,["עדכון אחרון: 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)"]]