به طور کلی، یک برنامه قابل اجرا روی سیستم عامل اندروید (به معنی آن که در حافظه بارگذاری شده است و می تواند اجرا شود) می تواند در یکی از دو حالت یک دستگاه اندرویدی باشد:
1: حالت اول این است که یک برنامه پیش زمینه باشد که در حال حاضر اجرا می شود و با کاربر تعامل دارد.
2: حالت دون این است که یک برنامه پسزمینه باشد، یعنی برنامه ای که با کاربر تعامل ندارد.
برنامه های پیش زمینه می توانند منجر به مصرف بیشتر باطری تلفن موشمند شما شوند. اما این موضوع مشکلی ایجاد نمی کند، زیرا کاربر به صورت آگاهانه تصمیم گرفته است که یک بازی سه بعدی انجام دهد یا فیلمی را تماشا می کند و در نتیجه انتظار کاهش قطعی در سطح باتری را دارد. با این حال، وظایف برنامه هایی که در پس زمینه اجرا می شوند، می تواند مؤثرتر باشد. از آن جایی که این برنامه ها با کاربر تعامل ندارند، کاربر کمی اطلاعاتی در مورد آن ها دارد و گاهاً هیچ اطلاعی ندارد. همچنین دقیقاً نمی داند چه میزان از تخلیه شدن باطری تحت تاثیر اجرای این برنامه ها است.
در راستای تلاش برای محدود کردن آسیب هایی که برنامه های پس زمینه می توانند در سطح باتری ایجاد کنند، اندروید 8 اورئو محدودیت اجرای برنامه های پس زمینه را اعمال می کند؛ فرآیندی که طی آن رفتارهای خاصی را که توسط برنامه های پیش زمینه اجرا نمی شوند، محدود می کند.
در این جا ذکر این نکته لازم است که اصطلاحات “پیش زمینه” و “پس زمینه” در این بخش معنای کمی متفاوت در مقایسه با تعاریف سنتی تر استفاده شده در سامانه های مدیریت حافظه در اندروید دارد. به نظر می رسد یک برنامه پیش زمینه است اگر فعالیت قابل مشاهده ای (شروع یا متوقف شده) داشته باشد. یا دارای یک سرویس پیش زمینه باشد، و یا این که برنامه پیش زمینه دیگری به برنامه متصل شود. برنامه مورد نظر ممکن است به یکی از سرویس های برنامه پیش زمینه متصل شده باشد یا از یکی از ارائه دهندگان محتوای آن استفاده کند.
با توجه به این تعریف، می توان فهمید که پخش کننده موسیقی یک برنامه پیش زمینه محسوب می شود، زیرا سرویس پیش زمینه ای ارائه می دهد (با اطلاع رسانی برای نوار وضعیت، تحت عنوان “در حال اجرا” قرار می گیرد) .حتی اگر رابط کاربری اصلی در پیش زمینه نباشد و کاربر با آن ارتباط برقرار نکند.
هنگامی که برنامه در پیش زمینه است، می تواند هر دو سرویس پیش زمینه و پس زمینه را آزادانه ایجاد و اجرا کند. هنگامی که یک برنامه در پس زمینه قرار می گیرد، چندین دقیقه زمان می برد تا بتواند سرویس های خود را ایجاد و استفاده کند. در پایان بازه زمانی در نظر گرفته شده برای هر برنامه توسط سیستم عامل، برنامه به حالت معلق و بیکارقرار گرفته و اندروید خدمات پس زمینه برنامه را متوقف می کند.
تمام آنچه گفته شد بدان معنی است که اگر برنامه، یکی از برنامه های رسانه اجتماعی باشد که می خواهد بررسی کند آیا پست های جدید وجود دارد یا خیر، (حتی اگر آن برنامه در پیش زمینه اجرا نشود)، دیگر نمی تواند فقط از یک سرویس پس زمینه استفاده کند که با استفاده از ابر بررسی می شود، زیرا برنامه پیش زمینه آن تحت مکانیزم محدودیت اجرای برنامه پس زمینه متوقف می شود. به جای آن، برنامه باید یک سرویس پس زمینه را با یک کار برنامه ریزی شده جایگزین کند، که به صورت دوره ای راه اندازی می شود، در میان ابرهای اطلاعاتی مختلف جست و جو می کنه و سپس تمام می شود.
برنامه ها باید سرویس پس زمینه را با یک کار برنامه ریزی شده جایگزین کنند، که به صورت دوره ای راه اندازی می شود و پس از آن تمام می شود.
زمان بند کارها:
اندروید اورئو 8 پیشرفت هایی در بخش زمان بند کارها معرفی می کند . این بهبود به صورتی طراحی شده است که به برنامه ها کمک کند برای اجرا به جای استفاده از سرویس های پس زمینه از کارهای زمان بندی شده استفاده کنند. زمان بند کارها یک API برای زمان بندی انواع مختلف کارها است که در فرآیند مرتبط با برنامه شما اجرا می شود. بزرگترین تغییر در آندروید 8.0 اورئو در بخش زمان بند کارها، اضافه شدن یک صف کاری جدید است. هنگامی که کاری در حال اجرا است، این صف می تواند یکی از کارهای معلق را از صف برداشته و پردازش نماید. قابلیت های اندروید اورئو می تواند بسیاری از حالات را مدیریت کند، زیرا پیش از این یک برنامه از سرویس پس زمینه استفاده می کرد.
بسیاری از برنامه هایی که دارای خدمات پس زمینه هستند از سرویس ذاتی (IntentService) استفاده می کنند، این سرویس در واقع یک کلاس مبتنی بر سرویس های پس زمینه ای است که درخواست های ناهمزمان را براساس تقاضا مدیریت می کند. در حال حاضر با پشتیبانی اندروید از کتابخانه 26.0.0، کلاس جدید JobIntentService معرفی شده است، که قابلیت هایی مشابه سرویس ذهنی فراهم می کند اما در هنگام اجرای روی اندروید اورئو به جای استفاده از سرویس های پس زمینه از کارهای زمان بندی شده استفاده می کند.
در نهایت، کارهای زمان بندی شده در حال حاضر از چندین گزینه جدید نیز پشتیبانی می کنند که در این میان می توان به موارد زیر اشاره کرد:
()isRequireStorageNotLow : تضمین می کند هرگاه فضای ذخیره سازی موجود در دستگاه کم است، کار مورد نظر اجرا نخواهد شد.
() isRequireBatteryNotLow ، تصمین می کند در صورتی که سطح باتری کم است، کار را از حالت اجرا متوقف خواهد کرد.
به طور پیش فرض محدودیت های اجرای پس زمینه تنها به برنامه هایی اعمال می شود که از اندروید اورئو استفاده می کنند. اما کاربران می توانند این محدودیت ها را برای هر برنامه ای ازطریق بخش تنظیمات فعال کنند.
استدلال این تغییرات این است که اجرای برنامه های پرخاش گر که در قالب پس زمینه از منابع سیستم بیش از حد استفاده می کنند متوقف شود. نکته جالب توجه این جا است که به طور پیش فرض محدودیت های اجرای پس زمینه فقط برای برنامه هایی که اندروید 8.0 را مد نظر قرار می دهند، اعمال می شود. با این حال، کاربران می توانند این محدودیت ها را برای هر برنامه دیگری از طریق بخش تنظیمات فعال کنند، حتی اگر برنامه برای نسخه های قبل از اندروید اورئو طراحی شده است.
نتیجه این تغییرات این است که شرکت گوگل اساساً توسعه دهندگان برنامه ها را مجبور می کند تا سرویس های پس زمینه را رها کرده و به جای آن از زمان بند کار ها به صورت هوشمند تر و کنترل شده تر استفاده نمایند. آیا برنامه پس زمینه محبوبی وجود دارد که ممکن است با این تغییرات کمتر مورد استفاده قرار گیرد؟
