Затвори ја рекламата

Сè уште има многу луѓе кои не знаат како функционира мултитаскингот во iOS. За почеток, сепак, неопходно е да се истакне дека ова не е вистинско мултитаскинг, туку многу паметно решение кое не го оптоварува системот или корисникот.

Често може да се слушне суеверија дека апликациите што работат во заднина во iOS ја пополнуваат оперативната меморија, што доведува до забавување на системот и траење на батеријата, па корисникот треба рачно да ги исклучи. Лентата за мултитаскинг всушност не содржи список на сите процеси кои се извршуваат во заднина, туку само неодамна лансираните апликации. Така, корисникот не мора да се грижи за процесите што се извршуваат во позадина, освен во неколку случаи. Кога ќе го притиснете копчето Home, апликацијата обично оди во мирување или се затвора, така што повеќе не го вчитува процесорот или батеријата и, доколку е потребно, ја ослободува потребната меморија.

Значи, ова не е целосно мултитаскинг кога имате десетици процеси кои работат. Само една апликација секогаш работи во преден план, која се паузира или целосно се исклучува доколку е потребно. Само неколку секундарни процеси работат во позадина. Затоа ретко ќе наидете на паѓање на апликација на iOS, на пример Андроид е преплавен со активни апликации за кои корисникот треба да се грижи. Од една страна, ова ја прави работата со уредот непријатна, а од друга страна предизвикува, на пример, бавно стартување и транзиции помеѓу апликациите.

Тип на траење на апликацијата

Апликацијата на вашиот iOS уред е во една од овие 5 состојби:

  • Трчање: апликацијата се стартува и работи во преден план
  • Позадина: сè уште работи, но работи во заднина (можеме да користиме други апликации)
  • Суспендирани: Сè уште користи RAM меморија, но не работи
  • Неактивни: апликацијата работи, но индиректни команди (на пример, кога го заклучувате уредот додека апликацијата работи)
  • Не работи: Апликацијата е прекината или не е започната

Збунетоста доаѓа кога апликацијата оди во позадина за да не се вознемирува. Кога ќе го притиснете копчето Home или ќе го користите гестот за да ја затворите апликацијата (iPad), апликацијата оди во позадина. Повеќето апликации се суспендирани во рок од неколку секунди (тие се складирани во RAM меморијата на iDevice за да можат брзо да се стартуваат, не го вчитуваат процесорот толку многу и со тоа заштедуваат траење на батеријата) Можеби мислите дека ако апликацијата продолжи да користи меморија, имате рачно да го избришете за да го ослободите . Но, не мора да го правите тоа, бидејќи iOS ќе го направи тоа наместо вас. Ако имате суспендирана апликација со тешки барања во позадина, како на пример игра која користи голема количина RAM меморија, iOS автоматски ќе ја отстрани од меморијата кога е потребно, а можете да ја рестартирате со допирање на иконата на апликацијата.

Ниту една од овие состојби не се рефлектира во лентата за повеќе задачи, панелот прикажува само листа на неодамна лансирани апликации без разлика дали апликацијата е запрена, паузирана или работи во заднина. Може да забележите и дека апликацијата што моментално работи не се појавува во панелот Multitasking

Задачи во заднина

Нормално, кога ќе го притиснете копчето Home, апликацијата ќе работи во позадина, а доколку не ја користите, автоматски ќе паузира во рок од пет секунди. Така, ако преземате подкаст, на пример, системот ја оценува како апликација која работи и го одложува завршувањето за десет минути. Најдоцна по десет минути, процесот се ослободува од меморијата. Накратко, не треба да се грижите дали ќе го прекинете преземањето со притискање на копчето Home, доколку не се потребни повеќе од 10 минути за да се заврши.

Неопределено трчање во позадина

Во случај на неактивност, системот ја прекинува апликацијата во рок од пет секунди, а во случај на преземања, прекинувањето доцни десет минути. Сепак, има мал број на апликации кои бараат да работат во заднина. Еве неколку примери на апликации кои можат да работат во позадина неодредено време во iOS 5:

  • Апликации кои репродуцираат звук и мора да бидат прекинати некое време (паузирање музика за време на телефонски повик итн.),
  • Апликации кои ја следат вашата локација (софтвер за навигација),
  • Апликации кои примаат VoIP повици, на пример, ако користите Skype, можете да примате повик дури и кога апликацијата е во позадина,
  • Автоматски преземања (на пр. Newsstand).

Сите апликации треба да се затворат ако веќе не извршуваат некоја задача (како што се преземања во заднина). Сепак, постојат исклучоци кои постојано работат во заднина, како што е домашната апликација Mail. Ако работат во заднина, тие зафаќаат меморија, употреба на процесорот или го намалуваат животниот век на батеријата

Апликациите на кои им е дозволено да работат во заднина неодредено време можат да прават сè што прават додека работат, од пуштање музика до преземање нови епизоди на објава.

Како што споменав претходно, корисникот никогаш не треба да ги затвора апликациите што работат во позадина. Единствен исклучок од ова е кога апликацијата што работи во заднина паѓа или не се буди правилно од спиење. Корисникот потоа може рачно да ги затвори апликациите во лентата за мултитаскинг, но тоа ретко се случува.

Значи, генерално, не треба да управувате со процесите во заднина бидејќи системот сам ќе се грижи за нив. Затоа iOS е толку свеж и брз систем.

Од перспектива на програмери

Апликацијата може да реагира со вкупно шест различни состојби како дел од мултитаскинг:

1. applicationWillResignActive

Во превод, оваа состојба значи дека апликацијата ќе се откаже од активна апликација (т.е. апликацијата во преден план) во иднина (прашање за неколку милисекунди). Ова се случува, на пример, кога примате повик додека ја користите апликацијата, но во исто време, овој метод исто така ја предизвикува оваа состојба пред апликацијата да оди во позадина, па затоа треба да ги земете предвид овие промени. Овој метод е исто така погоден така што, на пример, ги суспендира сите активности што ги извршува кога има дојдовен повик и чека до крајот на повикот.

2. applicationDidEnterBackground

Статусот покажува дека апликацијата отишла во позадина. Програмерите треба да го користат овој метод за да ги суспендираат сите процеси кои не мора нужно да се извршуваат во заднина и да ја исчистат меморијата од неискористените податоци и други процеси, како што се истекување на тајмерите, чистење на вчитаните слики од меморијата што не мора да бидат потребни или затворање врски со сервери, освен ако не е од клучно значење за апликацијата да ги комплетира врските во заднина. Кога методот се повикува во апликацијата, во основа треба да се користи за целосно суспендирање на апликацијата ако некој дел од неа не е потребно да се извршува во заднина.

3. апликацијаWillEnterForeground

Оваа состојба е спротивна на првата состојба, каде што апликацијата ќе се повлече на активната состојба. Состојбата едноставно значи дека апликацијата за спиење ќе продолжи од позадина и ќе се појави во преден план во следните неколку милисекунди. програмерите треба да го користат овој метод за да продолжат со сите процеси кои биле неактивни додека апликацијата била во заднина. Врските со серверите треба да се обноват, тајмерите да се ресетираат, сликите и податоците да се вчитаат во меморијата, а другите неопходни процеси може да продолжат непосредно пред корисникот повторно да ја види вчитаната апликација.

4. applicationDidBecomeActive

Состојбата покажува дека апликацијата штотуку станала активна откако е вратена во преден план. Ова е метод кој може да се користи за да се направат дополнителни прилагодувања на корисничкиот интерфејс или да се врати интерфејсот во првобитната состојба итн. Ова всушност се случува во моментот кога корисникот веќе ја гледа апликацијата на екранот, па затоа е неопходно да се со претпазливост утврди што се случува во методот на овој и во претходниот метод. Тие се нарекуваат еден по друг со разлика од неколку милисекунди.

5. апликацијатаЌе прекине

Оваа состојба се случува неколку милисекунди пред да излезе апликацијата, односно пред апликацијата навистина да заврши. Или рачно од мултитаскинг или при исклучување на уредот. Методот треба да се користи за зачувување на обработени податоци, за завршување на сите активности и за бришење податоци што повеќе нема да бидат потребни.

6. applicationDidReceiveMemoryWarning

Тоа е последната држава за која најмногу се дискутира. Тој е одговорен за, доколку е потребно, отстранување на апликацијата од меморијата на iOS ако непотребно користи системски ресурси. Не знам конкретно што прави iOS со апликациите во заднина, но ако му треба апликација за ослободување ресурси за други процеси, го поттикнува со предупредување за меморија да ги ослободи сите ресурси што ги има. Значи овој метод се нарекува во апликацијата. Програмерите треба да го имплементираат така што апликацијата се откажува од меморијата што ја доделила, зачувува сè што е во тек, ги брише непотребните податоци од меморијата и инаку соодветно ја ослободува меморијата. Вистина е дека многу програмери, дури и почетници, не размислуваат или разбираат за такви работи, а потоа може да се случи нивната апликација да го загрози траењето на батеријата и/или непотребно да ги троши системските ресурси, дури и во позадина.

Пресуда

Овие шест состојби и нивните поврзани методи се позадината на сите „мултитаскинг“ во iOS. тоа е одличен систем, сè додека програмерите не го игнорираат фактот дека има потреба да бидат одговорни за тоа што апликацијата фрла на уредите на нивните корисници, ако тие се минимизираат или добиваат предупредувања од системот и слично.

Извор: macworld.com

Автори: Јакуб Пожарек, Мартин Доубек (ArnieX)

 
Дали и вие имате проблем да решите? Дали ви треба совет или можеби ја пронајдете вистинската апликација? Не двоумете се да не контактирате преку формуларот во делот Советување, следниот пат ќе одговориме на вашето прашање.

.