ویک لاک های جزئی گیر کرده است
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Wake lock جزئی مکانیزمی در PowerManager
API است که به توسعه دهندگان این امکان را می دهد که CPU را پس از خاموش شدن نمایشگر دستگاه (چه به دلیل وقفه زمانی سیستم یا فشار دادن دکمه پاور توسط کاربر) روشن نگه دارند. برنامه شما با فراخوانی acquire()
با پرچم PARTIAL_WAKE_LOCK
، یا با استفاده از سایر APIهایی که wake lock را دریافت میکنند، یک wake lock جزئی دریافت میکند. یک wake lock جزئی اگر زمانی که برنامه شما در پسزمینه اجرا میشود برای مدت طولانی نگه داشته شود (هیچ بخشی از برنامه شما برای کاربر قابل مشاهده نیست) گیر میکند. این وضعیت باتری دستگاه را خالی می کند زیرا از ورود دستگاه به حالت های کم مصرف جلوگیری می کند. وایک لاک های جزئی باید فقط در صورت لزوم استفاده شوند و به محض اینکه دیگر مورد نیاز نباشند آزاد شوند.
اگر برنامه شما یک قفل بیدار جزئی گیر کرده است، می توانید از راهنمایی در این صفحه برای تشخیص و رفع مشکل استفاده کنید.
مشکل را تشخیص دهید
ممکن است همیشه ندانید که wake lock های جزئی برنامه شما گیر کرده است. اگر قبلاً برنامه خود را منتشر کرده اید، Android vitals می تواند به شما کمک کند تا از مشکل آگاه شوید.
حیاتی اندروید
Android vitals میتواند با هشدار دادن به شما از طریق کنسول Play در زمانی که برنامهتان دارای wake locks گیر کرده است، به بهبود عملکرد برنامه شما کمک کند. Android vitals گزارش میکند که wake lockهای جزئی در زمانی که حداقل یک ساعت طول میکشد، گیر میکنند، در حالی که در پسزمینه، قفل بیداری جزئی در یک دوره 24 ساعته رخ میدهد.
تعداد جلسات باتری نمایش داده شده در مجموع برای همه کاربران اندازه گیری شده برنامه است. برای اطلاعات در مورد نحوه جمعآوری دادههای حیاتی Android توسط Google Play، به مستندات کنسول Play مراجعه کنید.
هنگامی که متوجه شدید که برنامه شما قفلهای جزئی wake lock را گیر کرده است، گام بعدی شما رسیدگی به این مشکل است.
مشکل را برطرف کنید
از آنجایی که wake lock می تواند باتری دستگاه را تخلیه کند، اگر جایگزینی وجود دارد، نباید از wake lock استفاده کنید. اسناد Choose API مناسب برای بیدار نگه داشتن دستگاه می تواند به شما کمک کند بهترین راه حل را برای برنامه خود پیدا کنید.
اگر نیاز به استفاده از wake lock دارید، بهترین روشهای wake lock را دنبال کنید تا مطمئن شوید که wake lock شما به کارایی دستگاه آسیب نمیزند. به ویژه، مطمئن شوید که هر دستگاهی که به دست می آورید آزاد شده است و قفل را در اسرع وقت آزاد کنید.
پس از رفع مشکل در کد، می توانید با استفاده از ابزارهای اشکال زدایی wake lock محلی، رفع اشکال خود را تأیید کنید.
همچنین ببینید
{% کلمه به کلمه %}
{% آخر کلمه %} برای شما توصیه می شود
{% کلمه به کلمه %} {% آخر کلمه %}
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],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)"]]