همه ما درس "چند وظیفه = توانایی انجام چندین فرآیند به طور همزمان" را می دانیم. ما از آن در رایانه های خود استفاده می کنیم بدون اینکه از وجود آن آگاهی خاصی داشته باشیم. جابهجایی بین برنامهها یا پنجرههای یک برنامه (برای ما) در زمان واقعی انجام میشود و ما این قابلیت سیستم عامل را بدیهی میدانیم.
وظیفه متفاوت است
سیستم عامل پردازنده را در بازه های زمانی کم به همه برنامه ها اختصاص می دهد. این بازههای زمانی آنقدر کوچک هستند که نمیتوانیم متوجه آنها شویم، بنابراین به نظر میرسد که همه برنامهها همزمان از پردازنده استفاده میکنند. شاید اینطور فکر کنیم مالتی تسکینگ در iOS 4 دقیقا به همین صورت عمل می کند اینطور نیست. دلیل اصلی البته ظرفیت باتری است. اگر واقعاً همه برنامهها در پسزمینه اجرا میشدند، احتمالاً باید چند ساعت دیگر به دنبال سوکت باشیم.
اکثر برنامه های سازگار با iOS 4 در حالت تعلیق قرار می گیرند یا پس از فشار دادن دکمه Home به حالت Sleep قرار می گیرند. یک قیاس ممکن است بستن درب لپ تاپ باشد که بلافاصله به حالت خواب می رود. پس از باز کردن درب، لپتاپ بیدار میشود و همه چیز دقیقاً به همان حالت قبل از بسته شدن درب است. علاوه بر این، برنامه هایی وجود دارند که فشار دادن دکمه Home باعث پایان آنها می شود. و منظور ما یک فسخ واقعی است. توسعه دهندگان حق انتخاب دارند که از کدام یک از این روش ها استفاده کنند.
اما دسته دیگری از برنامه ها وجود دارد. اینها برنامههایی هستند که واقعاً در پسزمینه اجرا میشوند، حتی اگر شما کار کاملاً متفاوتی در iDevice خود انجام میدهید. اسکایپ مثال خوبی است زیرا به اتصال دائمی اینترنت نیاز دارد. مثالهای دیگر میتواند برنامههایی باشد که موسیقی پسزمینه (پاندورا) را پخش میکنند یا برنامههایی که نیاز به استفاده مداوم از GPS دارند. بله، این برنامهها حتی زمانی که در پسزمینه کار میکنند، باتری شما را خالی میکنند.
بخوابی یا شلیک کنی؟
برخی از برنامههای سازگار با iOS 4، که باید پس از فشار دادن دکمه Home به حالت Sleep (در حالت تعلیق قرار داده شوند)، در پسزمینه به کار خود ادامه میدهند. اپل دقیقاً ده دقیقه به توسعه دهندگان زمان داد تا برنامه هر چه که بود، وظیفه خود را انجام دهد. فرض کنید در حال دانلود یک فایل در GoodReader هستید. ناگهان یکی می خواهد با شما تماس بگیرد و شما فقط باید آن تماس مهم را بپذیرید. تماس ده دقیقه بیشتر طول نکشید، به اپلیکیشن GoodReader برمی گردید. ممکن است فایل قبلا دانلود شده باشد یا هنوز در حال دانلود است. اگر تماس بیش از ده دقیقه طول بکشد چه؟ برنامه، در مورد ما GoodReader، باید فعالیت خود را متوقف کند و به iOS بگوید که می توان آن را به حالت Sleep درآورد. اگر این کار را نکند، بیرحمانه توسط خود iOS فسخ میشود.
اکنون تفاوت بین چند وظیفه ای "موبایل" و "رومیزی" را می دانید. در حالی که روان بودن و سرعت جابجایی بین برنامه ها برای رایانه مهم است، عمر باتری همیشه مهمترین چیز برای دستگاه های تلفن همراه است. چندوظیفه ای نیز باید با این واقعیت تطبیق داده می شد. بنابراین، پس از خواندن این مقاله، اگر دکمه Home را دو بار فشار دهید، دیگر «نوار برنامههای در حال اجرا در پسزمینه» را نخواهید دید، بلکه در اصل تنها «فهرست برنامههای اخیراً استفاده شده» را مشاهده خواهید کرد.
نویسنده: دانیل هروشکامنبع: onemoretap.com
هوم، جالب :) من همیشه فکر می کردم که همیشه شبیه به نحوه انجام آن در یونیکس است. اینکه زمان CPU به برنامه صفر اختصاص داده شده است و فرآیند فقط در حافظه می نشیند، تمام منابع تخصیص داده شده است. بنابراین مجبور شدم دوبار صفحه اصلی را فشار دهم و بلافاصله برنامه را متوقف کنم تا آن را حذف کنم. پس آیا این بدان معناست که حتی اگر یک نماد برنامه در صفحه پنهان پایین وجود داشته باشد، برنامه هنوز مدت ها قبل (پس از 10 دقیقه) بسته است؟
در لیست پایین، برنامههایی که اخیراً باز شدهاند، وجود دارند که برخی از آنها همچنان میتوانند اجرا شوند، برخی به حالت تعلیق درآمده و برخی به طور کامل خاتمه مییابند. حذف دستی برنامه از لیست "عوارض جانبی" دارد که در صورت اجرای (یا تعلیق) آن خاتمه می یابد.
برنامه باید در مورد آن 10 دقیقه اضافی به خود بگوید، و تضمین نمی شود که آنها را دریافت کند.
خوب، این باعث نشد که وسواس من برای بستن برنامه از لیست خلاص شود (اگر تصادفاً منابع را بخورد، درست است؟ :-D)
درک من این است که 10 دقیقه برای برنامه هایی است که باید در پس زمینه کار کنند و در دسته "اسکایپ، جی پی اس و پخش موسیقی" قرار نمی گیرند. سایر برنامهها به حالت تعلیق تغییر میکنند و تا زمانی که حافظه برای چیزهای دیگر مورد نیاز نباشد در حافظه میمانند.
حالت تعلیق این مزیت را دارد که اگر نیاز به کشتن برنامه داشته باشید، اطلاعات آن را از دست نخواهید داد، همه چیز در لحظه تعویض به حالت تعلیق ذخیره می شود.
یا در مورد پخش، معادل دستور bg/fg
و در مورد پخش کننده یا سایر برنامه هایی که برای مدت زمان طولانی در پس زمینه اجرا می شوند، چطور؟ منظورم این است که آیا می توانم به عنوان یک توسعه دهنده "انتخاب" کنم یا باید به نوعی توسط اپل تأیید شود؟
برای اینکه برنامه واقعاً برای مدت نامحدودی در پس زمینه اجرا شود، باید یکی از اقدامات زیر را انجام دهد (ثبت نام کند):
- استفاده از خدمات موقعیت مکانی (GPS)
– پخش موسیقی در پس زمینه
- استفاده از VOIP (صدا از طریق IP)
با توجه به عنوان (نگاهی به زیر کاپوت)، انتظار داشتم مقاله حاوی توضیحاتی تا حدودی گسترده تر با جزئیات فنی باشد. این بیشتر شبیه یک Perex به مقاله است. اگر پرکس است، دنباله آن کی است؟ آیا می توانید بازپرداخت دریافت کنید؟ :-)
و چه چیزی را می خواهید با جزئیات بیشتر بدانید؟
از مقاله ای که در عنوان "زیر سرپوش" درج شده است، انتظار دارم توضیحات فنی دقیقی ارائه شود (نویسنده می تواند به عنوان مثال، سربار هنگام تعویض برنامه ها، یا نحوه دسترسی همزمان به منابع سیستم را تجزیه و تحلیل کند)، مقایسه ای با مدل های دیگر. (به عنوان مثال، با یک آیفون جیلبریک). تهیه نسخه پشتیبان از آن با برخی اندازه گیری ها ایده آل است. من به سادگی از مقاله ای که "زیر سرپوش" را در عنوان خود دارد بسیار بیشتر از این توصیف بسیار سطحی انتظار داشتم.
آیا کلاینت icq وجود دارد که به طور مداوم در پس زمینه مانند اسکایپ اجرا شود و اتصال را قطع نکند؟
برنامه 10 ثانیه برای رفتن به حالت تعلیق دارد، نه 10 دقیقه... و در طی این فرآیند، ممکن است برخی از بخش ها روی سرویس های باطن "آویزان" یا نشوند، که برخی از آنها قبلاً در بالا ذکر شده اند - این همان چیزی است که اپل آن را "هوشمند" می نامد. " چندوظیفه ای .... سپس سیستم او را ساقط کرد
اگر چیزی در حال دانلود، آپلود یا پردازش است، ممکن است برنامه به زمان بیشتری نیاز داشته باشد. هیچ ارتباطی با GPS، VoIP یا پخش موسیقی که در حالت مینیمالیستی برای مدت نامحدود اجرا می شوند، ندارد.