بستن آگهی

هنوز افراد زیادی هستند که نمی دانند چند وظیفه ای در iOS چگونه کار می کند. با این حال، برای شروع، لازم به ذکر است که این چندوظیفه واقعی نیست، بلکه یک راه حل بسیار هوشمندانه است که بر سیستم یا کاربر سنگینی نمی کند.

اغلب می‌توان خرافاتی را شنید که برنامه‌هایی که در پس‌زمینه در iOS اجرا می‌شوند، حافظه عامل را پر می‌کنند، که منجر به کندی سیستم و عمر باتری می‌شود، بنابراین کاربر باید آنها را به صورت دستی خاموش کند. نوار مولتی تسکینگ در واقع شامل فهرستی از تمام فرآیندهای پس‌زمینه در حال اجرا نیست، بلکه فقط شامل آخرین برنامه‌های راه‌اندازی شده است. بنابراین کاربر به جز در موارد معدودی نیازی به نگرانی در مورد فرآیندهای در حال اجرا در پس زمینه ندارد. هنگامی که دکمه Home را فشار می دهید، برنامه معمولاً به حالت Sleep یا بسته می شود تا دیگر پردازنده یا باتری بارگیری نشود و در صورت لزوم حافظه لازم را آزاد کند.

بنابراین، وقتی ده‌ها فرآیند در حال اجرا دارید، این چندوظیفگی کامل نیست. فقط چند فرآیند ثانویه در پس‌زمینه اجرا می‌شوند. به همین دلیل است که به ندرت با خرابی برنامه در iOS مواجه می شوید، به عنوان مثال اندروید غرق در برنامه های در حال اجرا است که کاربر باید از آنها مراقبت کند. این امر از یک طرف کار با دستگاه را ناخوشایند می کند و از طرف دیگر باعث می شود که مثلاً راه اندازی کند و انتقال بین برنامه ها کاهش یابد.

نوع زمان اجرای برنامه

برنامه در دستگاه iOS شما در یکی از این 5 حالت است:

  • دویدن: برنامه شروع شده و در پیش زمینه اجرا می شود
  • زمینه: هنوز در حال اجرا است اما در پس زمینه اجرا می شود (ما می توانیم از برنامه های دیگر استفاده کنیم)
  • معلق: هنوز از رم استفاده می کنید اما اجرا نمی شود
  • غیر فعال: برنامه در حال اجرا است اما دستورات غیرمستقیم (به عنوان مثال، زمانی که دستگاه را با برنامه در حال اجرا قفل می کنید)
  • اجرا نشدن: برنامه خاتمه یافته یا شروع نشده است

این سردرگمی زمانی ایجاد می شود که برنامه به پس زمینه می رود تا مزاحم نشود. هنگامی که دکمه Home را فشار می دهید یا از ژست برای بستن برنامه (iPad) استفاده می کنید، برنامه به پس زمینه می رود. اکثر برنامه‌ها در عرض چند ثانیه به حالت تعلیق در می‌آیند (آنها در رم iDevice ذخیره می‌شوند تا بتوانند به سرعت راه‌اندازی شوند، پردازنده را به اندازه کافی بارگیری نمی‌کنند و در نتیجه عمر باتری را ذخیره نمی‌کنند) ممکن است فکر کنید که اگر یک برنامه به استفاده از حافظه ادامه دهد، به صورت دستی آن را حذف کنید تا آزاد شود. اما لازم نیست این کار را انجام دهید، زیرا iOS این کار را برای شما انجام خواهد داد. اگر برنامه‌ای دارید که در پس‌زمینه به حالت تعلیق درآمده است، مانند بازی‌ای که از مقدار زیادی رم استفاده می‌کند، iOS به‌طور خودکار آن را در صورت لزوم از حافظه حذف می‌کند و می‌توانید با ضربه زدن روی نماد برنامه آن را راه‌اندازی مجدد کنید.

هیچ یک از این حالت‌ها در نوار چندوظیفه‌ای منعکس نمی‌شود، نوار فقط فهرستی از برنامه‌های اخیراً راه‌اندازی شده را بدون توجه به توقف، توقف موقت یا اجرای برنامه در پس‌زمینه نشان می‌دهد. همچنین ممکن است متوجه شوید که برنامه ای که در حال حاضر در حال اجرا است در پنل Multitasking ظاهر نمی شود

وظایف پس زمینه

به طور معمول، زمانی که دکمه Home را فشار می دهید، برنامه در پس زمینه اجرا می شود و اگر از آن استفاده نمی کنید، به طور خودکار در عرض پنج ثانیه متوقف می شود. بنابراین اگر به عنوان مثال در حال دانلود یک پادکست هستید، سیستم آن را به عنوان یک برنامه در حال اجرا ارزیابی می کند و پایان کار را ده دقیقه به تاخیر می اندازد. حداکثر پس از ده دقیقه، فرآیند از حافظه خارج می شود. به طور خلاصه، اگر تکمیل آن بیش از 10 دقیقه طول نکشید، لازم نیست نگران دانلود خود با فشار دادن دکمه Home باشید.

در حال اجرا نامحدود در پس زمینه

در صورت عدم فعاليت، سيستم ظرف مدت پنج ثانيه برنامه را خاتمه مي‌دهد و در صورت دانلود، ده دقيقه به تأخير مي‌افتد. با این حال، تعداد کمی از برنامه ها وجود دارند که نیاز به اجرا در پس زمینه دارند. در اینجا چند نمونه از برنامه هایی که می توانند در پس زمینه به طور نامحدود در iOS 5 اجرا شوند آورده شده است:

  • برنامه هایی که صدا پخش می کنند و باید برای مدتی قطع شوند (مکث موسیقی در حین تماس تلفنی و غیره)،
  • برنامه هایی که موقعیت مکانی شما را ردیابی می کنند (نرم افزار ناوبری)،
  • برنامه‌هایی که تماس‌های VoIP را دریافت می‌کنند، برای مثال اگر از اسکایپ استفاده می‌کنید، حتی زمانی که برنامه در پس‌زمینه است، می‌توانید تماس دریافت کنید.
  • دانلود خودکار (به عنوان مثال دکه روزنامه فروشی).

همه برنامه ها باید بسته شوند اگر دیگر وظیفه ای را انجام نمی دهند (مانند دانلودهای پس زمینه). با این حال، استثناهایی وجود دارد که به طور مداوم در پس زمینه اجرا می شوند، مانند برنامه اصلی Mail. اگر در پس‌زمینه کار می‌کنند، حافظه، مصرف CPU را اشغال می‌کنند یا عمر باتری را کاهش می‌دهند

برنامه‌هایی که اجازه دارند به‌طور نامحدود در پس‌زمینه اجرا شوند، می‌توانند در حین اجرا هر کاری را انجام دهند، از پخش موسیقی گرفته تا دانلود قسمت‌های جدید پادکست.

همانطور که قبلاً اشاره کردم، کاربر هرگز نیازی به بستن برنامه های در حال اجرا در پس زمینه ندارد. تنها استثنا در این مورد زمانی است که اپلیکیشنی که در پس‌زمینه اجرا می‌شود از کار می‌افتد یا به درستی از خواب بیدار نمی‌شود. سپس کاربر می تواند برنامه ها را به صورت دستی در نوار چندوظیفه ای ببندد، اما این به ندرت اتفاق می افتد.

بنابراین، به طور کلی، شما نیازی به مدیریت فرآیندهای پس زمینه ندارید، زیرا سیستم خود از آنها مراقبت می کند. به همین دلیل است که iOS یک سیستم جدید و سریع است.

از دیدگاه یک توسعه دهنده

برنامه می تواند در مجموع با شش حالت مختلف به عنوان بخشی از چند وظیفه ای واکنش نشان دهد:

1. applicationWillResignActive

در ترجمه، این حالت به این معنی است که برنامه در آینده (در حد چند میلی ثانیه) از برنامه فعال بودن (یعنی برنامه در پیش زمینه) کناره گیری می کند. این اتفاق می افتد مثلاً هنگام دریافت تماس در حین استفاده از برنامه، اما در عین حال این روش قبل از رفتن برنامه به پس زمینه این حالت را نیز ایجاد می کند، بنابراین باید این تغییرات را در نظر بگیرید. این روش همچنین مناسب است که مثلاً در صورت وجود تماس ورودی، تمام فعالیت هایی را که انجام می دهد به حالت تعلیق در می آورد و تا پایان تماس منتظر می ماند.

2. applicationDidEnterBackground

وضعیت نشان می دهد که برنامه به پس زمینه رفته است. توسعه‌دهندگان باید از این روش برای تعلیق تمام فرآیندهایی که لزوماً نیازی به اجرا در پس‌زمینه ندارند استفاده کنند و حافظه را از داده‌های استفاده نشده و سایر فرآیندها پاک کنند، مانند تایمرهای منقضی، پاک کردن تصاویر بارگذاری شده از حافظه که لزوماً نیازی به آنها نیست، یا بسته شدن اتصالات با سرورها، مگر اینکه تکمیل اتصالات در پس زمینه برای برنامه حیاتی باشد. هنگامی که متد در برنامه فراخوانی می شود، اساساً باید از آن برای تعلیق کامل برنامه استفاده شود، اگر بخشی از آن لازم نیست در پس زمینه اجرا شود.

3. applicationWillEnterForeground

این حالت برعکس حالت اول است که در آن برنامه به حالت فعال می رود. وضعیت به سادگی به این معنی است که برنامه خواب از پس زمینه از سر گرفته می شود و در چند میلی ثانیه آینده در پیش زمینه ظاهر می شود. توسعه دهندگان باید از این روش برای از سرگیری فرآیندهایی که در زمانی که برنامه در پس‌زمینه بود غیرفعال بودند استفاده کنند. اتصالات به سرورها باید دوباره برقرار شوند، تایمرها بازنشانی شوند، تصاویر و داده ها در حافظه بارگذاری شوند، و سایر فرآیندهای ضروری می توانند درست قبل از اینکه کاربر برنامه بارگذاری شده را دوباره ببیند، از سر گرفته شوند.

4. applicationDidBecomeActive

وضعیت نشان می دهد که برنامه به تازگی پس از بازیابی به پیش زمینه فعال شده است. این روشی است که می توان از آن برای انجام تنظیمات اضافی در رابط کاربری یا بازگرداندن رابط کاربری به حالت اولیه و غیره استفاده کرد. این در واقع در لحظه ای اتفاق می افتد که کاربر قبلاً برنامه را روی صفحه نمایش می بیند، بنابراین لازم است با احتیاط مشخص کنید که در روش این و در روش قبلی چه اتفاقی می افتد. آنها یکی پس از دیگری با اختلاف چند میلی ثانیه نامیده می شوند.

5. applicationWill Terminate

این حالت چند میلی ثانیه قبل از خروج برنامه اتفاق می افتد، یعنی قبل از اینکه برنامه واقعاً خاتمه یابد. یا به صورت دستی از چند کار یا هنگام خاموش کردن دستگاه. این روش باید برای ذخیره داده‌های پردازش شده، پایان دادن به همه فعالیت‌ها و حذف داده‌هایی که دیگر مورد نیاز نیستند استفاده شود.

6. applicationDidReceiveMemoryWarning

این آخرین حالتی است که بیشتر مورد بحث قرار گرفته است. در صورت لزوم، مسئول حذف برنامه از حافظه iOS در صورت استفاده غیر ضروری از منابع سیستم است. نمی‌دانم iOS با برنامه‌های پس‌زمینه چه می‌کند، اما اگر به برنامه‌ای نیاز داشته باشد تا منابع را برای پردازش‌های دیگر آزاد کند، با یک هشدار حافظه از آن می‌خواهد که منابعی را که دارد آزاد کند. بنابراین این روش در برنامه نامیده می شود. توسعه دهندگان باید آن را پیاده سازی کنند تا برنامه از حافظه ای که اختصاص داده است صرف نظر کند، همه چیز در حال انجام را ذخیره کند، داده های غیر ضروری را از حافظه پاک کند و در غیر این صورت به اندازه کافی حافظه را آزاد کند. درست است که بسیاری از توسعه دهندگان، حتی مبتدیان، به چنین چیزهایی فکر نمی کنند یا نمی فهمند، و سپس ممکن است برنامه آنها عمر باتری را تهدید کند و/یا منابع سیستم را بی دلیل، حتی در پس زمینه، مصرف کند.

حکم

این شش حالت و روش‌های مرتبط با آنها، پس‌زمینه همه «چند وظیفه‌ای» در iOS هستند. این یک سیستم عالی است، تا زمانی که توسعه‌دهندگان این واقعیت را نادیده نگیرند که باید در مورد آنچه برنامه روی دستگاه‌های کاربرانشان پرتاب می‌کند، در صورت به حداقل رساندن یا دریافت هشدار از سیستم و غیره، مسئولیت پذیر باشند.

منبع: macworld.com

نویسندگان: یاکوب پوژارک، مارتین دوبک (ArnieX)

 
آیا شما هم مشکلی برای حل دارید؟ آیا به مشاوره نیاز دارید یا شاید برنامه مناسب را پیدا کنید؟ در تماس با ما از طریق فرم موجود در بخش شک نکنید مشاوره، دفعه بعد به سوال شما پاسخ خواهیم داد.

.