Wake lock جزئی مکانیزمی در PowerManager
API است که به توسعه دهندگان این امکان را می دهد که CPU را پس از خاموش شدن نمایشگر دستگاه (چه به دلیل وقفه زمانی سیستم یا فشار دادن دکمه پاور توسط کاربر) روشن نگه دارند. برنامه شما با فراخوانی acquire()
با پرچم PARTIAL_WAKE_LOCK
یک wake lock جزئی دریافت می کند. یک wake lock جزئی اگر زمانی که برنامه شما در پسزمینه اجرا میشود برای مدت طولانی نگه داشته شود (هیچ بخشی از برنامه شما برای کاربر قابل مشاهده نیست) گیر میکند. این وضعیت باتری دستگاه را خالی می کند زیرا از ورود دستگاه به حالت های کم مصرف جلوگیری می کند. وایک لاک های جزئی باید فقط در صورت لزوم استفاده شوند و به محض اینکه دیگر مورد نیاز نباشند آزاد شوند.
اگر برنامه شما یک قفل بیدار جزئی گیر کرده است، می توانید از راهنمایی در این صفحه برای تشخیص و رفع مشکل استفاده کنید.
مشکل را تشخیص دهید
ممکن است همیشه ندانید که wake lock های جزئی برنامه شما گیر کرده است. اگر قبلاً برنامه خود را منتشر کرده اید، Android vitals می تواند به شما کمک کند تا از مشکل آگاه شوید.
حیاتی اندروید
Android vitals میتواند با هشدار دادن به شما از طریق کنسول Play در زمانی که برنامهتان دارای wake locks گیر کرده است، به بهبود عملکرد برنامه شما کمک کند. Android vitals گزارش می دهد که wake lock جزئی در زمانی که حداقل یک ساعت طول می کشد، گیر می کند، در حالی که در پس زمینه، قفل نیمه بیدار در یک جلسه باتری رخ می دهد.
تعریف جلسه باتری به نسخه پلتفرم بستگی دارد.
- در اندروید 10، یک جلسه باتری، تجمیع تمام گزارشهای باتری دریافتی در یک دوره 24 ساعته معین است. گزارش باتری به فاصله زمانی بین دو شارژ باتری از زیر 20٪ تا بالای 80٪ یا از هر سطح شارژ تا 100٪ اشاره دارد.
- در اندروید 11، یک جلسه باتری یک دوره 24 ساعته ثابت است.
تعداد جلسات باتری نمایش داده شده در مجموع برای همه کاربران اندازه گیری شده برنامه است. برای اطلاعات در مورد نحوه جمعآوری دادههای حیاتی Android توسط Google Play، به مستندات کنسول Play مراجعه کنید.
هنگامی که متوجه شدید که برنامه شما دارای wake lockهای جزئی بیش از حد گیر کرده است، گام بعدی شما رسیدگی به این مشکل است.
مشکل را برطرف کنید
از آنجایی که wake lock می تواند باتری دستگاه را تخلیه کند، اگر جایگزینی وجود دارد، نباید از wake lock استفاده کنید. اسناد Choose API مناسب برای بیدار نگه داشتن دستگاه می تواند به شما کمک کند بهترین راه حل را برای برنامه خود پیدا کنید.
اگر نیاز به استفاده از wake lock دارید، بهترین روشهای wake lock را دنبال کنید تا مطمئن شوید که wake lock شما به کارایی دستگاه آسیب نمیزند. به ویژه، مطمئن شوید که هر دستگاهی که به دست می آورید آزاد شده است و قفل را در اسرع وقت آزاد کنید.
پس از رفع مشکل در کد، با استفاده از ابزارهای زیر بررسی کنید که برنامه شما به درستی wake lock را آزاد می کند:
dumpsys - ابزاری است که اطلاعاتی در مورد وضعیت خدمات سیستم در یک دستگاه ارائه می دهد. برای مشاهده وضعیت سرویس پاور، که شامل لیستی از wake lockها است،
adb shell dumpsys power
اجرا کنید.Battery Historian - ابزاری که خروجی گزارش اشکال اندروید را به نمایشی بصری از رویدادهای مرتبط با انرژی تجزیه می کند.
برای شما توصیه می شود
- توجه: وقتی جاوا اسکریپت خاموش است، متن پیوند نمایش داده می شود
- قاب های یخ زده
- معیارها را در Continuous Integration اجرا کنید
- ایجاد و اندازه گیری پروفایل های پایه بدون Macrobenchmark