این سیستم درخواستهای برنامهها برای منابع را بر اساس وضعیت دستگاه، وضعیت برنامه و سطل آماده به کار برنامه اولویتبندی میکند.
سیستم اندروید می تواند محدودیت های منابع را به دو روش مختلف اعمال کند. یکی از راههای بهینهسازی استفاده از منابع، به تعویق انداختن اجرای کار تا زمانی است که دستگاه از حالت دستگاه کم مصرف مانند حالت چرت زدن خارج شود. برای مثال، کارهای معمولی و آلارمهای غیردقیق به تعویق میافتند تا پس از خروج دستگاه از حالت چرت زدن، اجرا شوند.
راه دیگر این است که بر اساس سطل آماده به کار فعلی برنامه، میزانی که برنامه می تواند دستگاه را بیدار کند و کار کند، کاهش دهید. این سیستم می تواند هم فرکانس (هر چند وقت یکبار برنامه دستگاه را بیدار می کند) و مدت زمان کل (مدت زمانی که دستگاه بیدار می ماند) را کاهش دهد. به عنوان مثال، اگر برنامه در سطل آماده به کار کمیاب باشد، برنامه میتواند کارهای برنامهریزی شده را برای مدت زمان کلی 10 دقیقه در یک دوره 24 ساعته اجرا کند.
توجه داشته باشید که WorkManager از JobScheduler برای زمانبندی وظایف زمانی که برنامه قابل مشاهده نیست و کارگران تحت تأثیر محدودیتهای منابع شغلی قرار میگیرند، استفاده میکند.
با خواندن این موارد می توانید محدودیت ها را بیشتر درک کنید:
- محدودیت منابع بر اساس وضعیت دستگاه
- محدودیت منابع بر اساس وضعیت برنامه
- محدودیت منابع بر اساس سطل آماده به کار برنامه
توجه داشته باشید که وضعیت دستگاه و وضعیت برنامه می تواند جایگزین محدودیت های سطل آماده به کار برنامه شود. به عنوان مثال، اگر دستگاه در حال شارژ باشد، سیستم به برنامههای موجود در سطل آماده به کار کمیاب اجازه میدهد تا در یک دوره 24 ساعته بیش از 10 دقیقه کارهای خود را انجام دهند.
تغییرات رفتاری وجود داشته است که بر محدودیت منابع نیز تأثیر گذاشته است. برای کسب اطلاعات بیشتر ، تغییرات رفتار Android را که بر محدودیت منابع تأثیر می گذارد، ببینید.
محدودیت منابع بر اساس وضعیت دستگاه
این سیستم همچنین میتواند محدودیتهای منابع را بر اساس وضعیت دستگاه مستثنی یا اعمال کند. به عنوان مثال، به دستگاهی که در حالت شارژ است ، بدون توجه به سطل آماده به کار برنامه، دسترسی نامحدود به منابع داده می شود.
وضعیت دستگاه | مشاغل | آلارم ها | دسترسی به شبکه | Firebase Cloud Messaging |
شارژ کردن | بدون محدودیت اجرا به جز سطل آماده به کار محدود | هیچ محدودیتی در اجرا برای همه سطلهای آماده به کار و وضعیتهای فرآیند وجود ندارد، مگر اینکه کاربر به صورت دستی باتری برنامه را محدود کند. | بدون محدودیت | بدون محدودیت |
صفحه نمایش روشن است | محدودیت های اجرا بر اساس سطل آماده به کار اعمال می شوند | محدودیت های اجرا بر اساس فرآیند برنامه و سطل آماده به کار اعمال می شوند | دسترسی به سطل آماده به کار یا وضعیت فرآیند برنامه بستگی دارد | بدون محدودیت |
صفحه خاموش و چرت زدن فعال است | محدودیت های اجرا بر اساس سطل آماده به کار اعمال می شوند و اجرا به پنجره تعمیر و نگهداری doze موکول می شود | محدودیت های اجرا بر اساس سطل آماده به کار اعمال می شوند. آلارم های منظم: به تعویق افتادن پنجره تعمیر و نگهداری آلارم در حالت بیکار: محدود به 7 در ساعت | در هنگام چرت زدن محدود است | اولویت بالا: بدون محدودیت اجرا اولویت عادی: به پنجره تعمیر و نگهداری دوز موکول شده است |
محدودیت منابع بر اساس وضعیت برنامه
اینکه آیا سیستم محدودیت های منابع سطل آماده به کار برنامه را اعمال می کند یا نه به اهمیت فرآیند برنامه بستگی دارد. برای درک سطوح مختلف اهمیت فرآیند، ActivityManager.RunningAppProcessInfo.importance
را بررسی کنید.
کاربر دستگاه همچنین میتواند بهصورت دستی بهینهسازیهای مدیریت انرژی برنامه را لغو کند ، که جایگزین محدودیتهای سطل آماده به کار برنامهها میشود.
وضعیت برنامه | مشاغل | آلارم ها | شبکه |
فرآیند برنامه قابل مشاهده یا در حالت پیش زمینه است | بدون محدودیت اجرا | بدون محدودیت فرکانس | بدون محدودیت |
فرآیند برنامه در حال اجرای یک سرویس پیش زمینه است | محدودیت های اجرا بر اساس سطل آماده به کار اعمال می شوند*** | محدودیت های فرکانس بر اساس سطل آماده به کار اعمال می شود | بدون محدودیت |
کاربر به صورت دستی باتری برنامه را محدود می کند | اجرا محدود شده است | اجرا محدود شده است | دسترسی به رفتار سطل آماده به کار بستگی دارد |
کاربر به صورت دستی باتری برنامه را لغو می کند | محدودیت اجرا سخاوتمندانه است*** | بدون محدودیت اجرا | بدون محدودیت مگر اینکه دستگاه در حالت ذخیره داده باشد |
*** رفتار سهمیه اعدام برای مشاغل در اندروید 16 تغییر کرد . قبل از اندروید 16، زمانی که برنامه از سرویس پیشزمینه استفاده میکرد یا کاربر باتری برنامه را محدود نمیکرد، محدودیتی برای اجرا وجود نداشت.
محدودیت منابع بر اساس سطل آماده به کار برنامه
توجه : مقادیر موجود در این جدول تضمینی برای مدت زمان اجرا نیستند، زیرا سایر شرایط دستگاه یا تغییرات سطل میتواند بر محدودیتهای منابع تأثیر بگذارد. مقادیر در نسخههای آینده اندروید نیز ممکن است تغییر کنند.
مشاغل معمولی، کارهای تسریع شده، هشدارها و دسترسی به شبکه را می توان بر اساس سطل آماده به کار برنامه محدود کرد. با استفاده از این محدودیتهای تقریبی مدیریت انرژی بهعنوان یک دستورالعمل، درک کنید که چگونه سطلهای آماده به کار برنامه بر روی برنامه شما تأثیر میگذارند. برای عملکرد بهینه، بهترین شیوه های آماده به کار برنامه را رعایت کنید و استفاده از باتری را برای API های زمان بندی کار بهینه کنید .
توجه داشته باشید که با شروع Android 13 ، سطل آماده به کار برنامه دیگر تعیین نمی کند که یک برنامه چند FCM با اولویت بالا می تواند استفاده کند.
سطل آماده به کار برنامه | مشاغل معمولی* | مشاغل تسریع شده ** | آلارم ها | شبکه |
فعال: | حداکثر 20 دقیقه در یک دوره 60 دقیقه ای چرخشی*** | حداکثر 30 دقیقه در یک دوره 24 ساعته *** | بدون محدودیت اجرا | بدون محدودیت |
مجموعه کاری: | تا 10 دقیقه در یک دوره 4 ساعته چرخشی | تا 15 دقیقه در یک دوره 24 ساعته | محدود به 10 در ساعت | بدون محدودیت |
مکرر: | تا 10 دقیقه در یک دوره 12 ساعته چرخشی | حداکثر 10 دقیقه در یک دوره 24 ساعته | محدود به 2 در ساعت | بدون محدودیت |
نادر: | حداکثر 10 دقیقه در یک دوره 24 ساعته چرخشی | حداکثر 10 دقیقه در یک دوره 24 ساعته | محدود به 1 در ساعت | از کار افتاده است |
محدود شده: | یک بار در روز تا 10 دقیقه | حداکثر 5 دقیقه در یک پنجره 24 ساعته متحرک | یک زنگ در روز، یا زنگ دقیق یا زنگ هشدار نادرست | از کار افتاده است |
* مشاغل معمولی مشاغلی را توصیف می کنند که از پرچم های setUserInitiated(true)
یا setExpedited(true)
در JobScheduler یا کارگران تسریع شده در WorkManager استفاده نمی کنند.
** کارهای تسریع شده دارای محدودیت اجرایی جداگانه نسبت به کارهای معمولی هستند، آنها را می توان در WorkManager پیکربندی کرد تا پس از اتمام محدودیت های تسریع شده، با استفاده از محدودیت های اجرای کار معمولی به اجرا ادامه دهند.
*** رفتار سهمیه اعدام برای مشاغل در اندروید 16 تغییر کرد . قبل از اندروید 16 زمانی که برنامه در سطل آماده به کار فعال باشد محدودیتی برای اجرا وجود نداشت.
تغییرات رفتار اندروید که بر محدودیت منابع تأثیر می گذارد
بهروزرسانیهای اندروید زیر تغییراتی در محدودیتهای منابع برنامه ایجاد کردند.
اندروید 16
تغییر رفتار بهینه سازی سهمیه JobScheduler
Android سهمیه زمان اجرای کار منظم و سریع را بر اساس عوامل زیر تنظیم کرده است:
- برنامه در کدام سطل آماده به کار برنامه قرار دارد
- اگر کار در حالی که برنامه در بالاترین وضعیت قرار دارد شروع به اجرا کند
- اگر کار هنگام اجرای یک سرویس پیش زمینه در حال اجرا باشد
اندروید 13
تغییر رفتار سهمیههای پیام ابری Firebase با اولویت بالا
- سطل های آماده به کار برنامه دیگر تعیین نمی کنند که یک برنامه چند FCM با اولویت بالا می تواند استفاده کند.
- اگر تشخیص دهد که یک برنامه به طور مداوم پیامهایی با اولویت بالا ارسال میکند که منجر به اعلان نمیشود، اکنون سیستم پیامهای با اولویت بالا را کاهش میدهد.
- برای دستورالعملهای فعلی در مورد پیامهای با اولویت بالا، به مستندات firebase در مورد تنظیم و مدیریت اولویت پیام مراجعه کنید.
اندروید 9
ویژگی App Standby Buckets معرفی شد
اندروید 9 یک ویژگی جدید مدیریت باتری، App Standby Buckets را معرفی می کند. App Standby Buckets به سیستم کمک میکند تا درخواستهای برنامهها برای منابع را براساس میزان اخیر و تعداد دفعات استفاده از برنامهها اولویتبندی کند. بر اساس الگوهای استفاده از برنامه، هر برنامه در یکی از پنج سطل اولویت قرار می گیرد. این سیستم منابع دستگاه در دسترس برای هر برنامه را بر اساس سطل برنامه محدود می کند.