wake locks חלקיים ממושכים
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
חסימות חלקיות של מצב השינה הן מנגנון ב-API של PowerManager
שמאפשר למפתחים להשאיר את המעבד פועל אחרי שהמסך של המכשיר נכבה (בין אם בגלל זמן קצוב לתפוגה של המערכת או בגלל שהמשתמש לחץ על לחצן ההפעלה). כדי לקבל נעילת התעוררות חלקית, האפליקציה צריכה לקרוא ל-acquire()
עם הדגל PARTIAL_WAKE_LOCK
, או להשתמש בממשקי API אחרים שמקבלים נעילת התעוררות.
אם נעילת ההתעוררות חלקית נמשכת זמן רב בזמן שהאפליקציה פועלת ברקע (אף חלק מהאפליקציה לא גלוי למשתמש), היא נתקעת. המצב הזה גורם לריקון הסוללה של המכשיר כי הוא מונע מהמכשיר לעבור למצבי צריכת אנרגיה נמוכים יותר. יש להשתמש בנעילות מצב פעילות חלקיות רק במקרה הצורך, ולשחרר אותן ברגע שהן לא נחוצות יותר.
אם באפליקציה שלכם יש נעילת התעוררות חלקית תקועה, תוכלו להיעזר בהנחיות שבדף הזה כדי לאבחן ולפתור את הבעיה.
זיהוי הבעיה
יכול להיות שלא תמיד תדעו שהחסמויות החלקיות של מצב שינה באפליקציה תקועות.
אם כבר פרסמתם את האפליקציה, תפקוד האפליקציה ב-Android יכול לעזור לכם לזהות את הבעיה.
תפקוד האפליקציה
נתוני תפקוד האפליקציה יכולים לעזור לכם לשפר את הביצועים של האפליקציה. הם מאפשרים לקבל התראות דרך Play Console כשיש באפליקציה חסימות חלקיות תקועות של מצב ההפעלה. מדד תפקוד האפליקציה ב-Android מדווח על חסימות חלקיות של מצב שינה כחסימות ממושכות אם מתרחשת לפחות חסימה אחת של שעה בזמן שהאפליקציה פועלת ברקע, בתקופה של 24 שעות.
מספר סשני הסוללה שמוצגים הוא סכום של כל המשתמשים שנמדדו באפליקציה. מידע על האופן שבו Google Play אוספת נתוני תפקוד האפליקציה ב-Android זמין במסמכי העזרה של 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)"]]