Жарнама жабуу

iOS'то көп тапшырма кантип иштээрин билбегендер дагы эле көп. Баштоо үчүн, бул чыныгы көп тапшырма эмес, системага же колдонуучуга оорчулук келтирбеген абдан акылдуу чечим экенин белгилей кетүү керек.

iOS'тун фонунда иштеген колдонмолор операциялык эстутумду толтурат деген ырым-жырымдарды көп угууга болот, бул системанын жайлашына жана батареянын иштөө мөөнөтүн азайтат, андыктан колдонуучу аларды кол менен өчүрүшү керек. Көп тапшырма тилкесинде иш жүзүндө бардык иштеп жаткан фон процесстеринин тизмеси камтылбайт, бирок эң акыркы ишке киргизилген тиркемелер гана. Ошентип, колдонуучу бир нече учурларды кошпогондо, фондо иштеп жаткан процесстер жөнүндө тынчсыздануунун кереги жок. Үй баскычын басканда, тиркеме адатта уктап калат же жабылат, ошентип ал мындан ары процессорду же батарейканы жүктөбөйт жана керек болсо керектүү эстутумду бошотот.

Демек, сизде ондогон процесстер иштеп турганда, бул толук кандуу көп тапшырма эмес. Фондо бир нече кошумча процесстер гана иштейт. Ошондуктан iOS'то колдонмонун бузулушуна сейрек учурайсыз, мисалы, Android колдонуучу кам көрүшү керек болгон иштеп жаткан тиркемелерге толуп калган. Бул бир жагынан аппарат менен иштөөнү жагымсыз кылат, ал эми экинчи жагынан, мисалы, жай баштоо жана тиркемелердин ортосунда өтүүлөрдү жаратат.

Колдонмонун иштөө убактысынын түрү

iOS түзмөгүңүздөгү колдонмо бул 5 абалдын биринде:

  • Иштеп жатат: колдонмо башталган жана алдыңкы планда иштеп жатат
  • Фон: ал дагы эле иштеп жатат, бирок фондо иштеп жатат (башка колдонмолорду колдоно алабыз)
  • Токтотулган: Дагы эле RAM колдонууда, бирок иштебейт
  • Жигерсиз: колдонмо иштеп жатат, бирок кыйыр буйруктар (мисалы, колдонмо иштеп турганда аппаратты кулпулоодо)
  • Иштебейт: Колдонмо токтотулду же баштала элек

Тынчсыздандырбоо үчүн колдонмо фондо өткөндө башаламандык пайда болот. Үй баскычын басканда же тиркемени (iPad) жабуу үчүн жаңсоону колдонгондо, тиркеме фонго өтөт. Көпчүлүк колдонмолор секунданын ичинде убактылуу токтотулат (Алар iDevice'тин оперативдүү эсинде сакталат, ошондуктан алар тез ишке киргизилет, алар процессорду көп жүктөбөйт жана батареянын иштөө мөөнөтүн үнөмдөйт) Эгер колдонмо эстутумду колдоно берсе, сизде аны бошотуу үчүн кол менен жок кылуу. Бирок муну кылуунун кереги жок, анткени iOS муну сиз үчүн жасайт. Эгер сизде көп көлөмдөгү оперативдүү эстутумду колдонгон оюн сыяктуу талап кылынган тиркемеңиз фондо токтотулса, iOS керек болгондо аны эстутумдан автоматтык түрдө алып салат жана колдонмонун сөлөкөтүн таптап, аны өчүрүп күйгүзсөңүз болот.

Бул абалдардын бири дагы көп тапшырма тилкесинде чагылдырылбайт, тилке колдонмо токтоп, тындырылып же фондо иштеп жатканына карабастан, жакында ишке киргизилген колдонмолордун тизмесин гана көрсөтөт. Ошондой эле учурда иштеп жаткан тиркеме Көп тапшырма панелинде көрүнбөй турганын байкасаңыз болот

Фондук тапшырмалар

Адатта, сиз Башкы бет баскычын басканда, тиркеме фондо иштейт, ал эми сиз аны колдонбосоңуз, ал автоматтык түрдө беш секунддун ичинде тыным алат. Андыктан, мисалы, сиз подкастты жүктөп жатсаңыз, система аны иштеп жаткан тиркеме катары баалайт жана токтотууну он мүнөткө кечиктирет. Кечинде он мүнөттөн кийин процесс эс тутумдан бошотулат. Кыскасы, жүктөө процессин бүтүрүү үчүн 10 мүнөттөн ашык убакыт талап кылынбаса, Башкы баскычты басуу аркылуу жүктөө процессин үзгүлтүккө учуратып алуудан кабатыр болбоңуз.

Фондо чексиз чуркоо

Кыймылсыз болгон учурда, система тиркемени беш секунддун ичинде токтотот, ал эми жүктөлүп алынган учурда, токтотуу он мүнөткө кечигет. Бирок, фондо иштөөнү талап кылган аз сандагы тиркемелер бар. Бул жерде iOS 5те фондо чексиз иштей турган колдонмолордун айрым мисалдары келтирилген:

  • Үн ойнотуучу жана бир азга үзгүлтүккө учурашы керек болгон тиркемелер (телефон чалуу учурунда музыканы тындыруу ж.б.),
  • Жайгашкан жериңизге көз салган колдонмолор (навигация программасы),
  • VoIP чалууларды кабыл алган тиркемелер, мисалы, Skype колдонсоңуз, колдонмо фондо турганда да чалууну кабыл ала аласыз,
  • Автоматтык жүктөөлөр (мисалы, Newsstand).

Бардык тиркемелер мындан ары тапшырманы аткарбай калса, жабылышы керек (мисалы, фондо жүктөөлөр). Бирок, тынымсыз фондо иштей турган өзгөчөлүктөр бар, мисалы, жергиликтүү Почта колдонмосу. Эгер алар фондо иштеп жатса, алар эстутумду ээлеп, CPU колдонууну же батареянын иштөө мөөнөтүн кыскартат

Фондо чексиз иштөөгө уруксат берилген колдонмолор музыка ойнотуудан тартып жаңы Подкаст эпизоддорун жүктөп алууга чейин иштеп жатканда эмне кылса болот.

Мен мурда айтылгандай, колдонуучу эч качан фондо иштеп жаткан колдонмолорду жабуунун кереги жок. Фондо иштеп жаткан колдонмо бузулганда же уйкудан ойгонбой калганда гана өзгөчөлүктөр бар. Андан кийин колдонуучу тиркемелерди көп тапшырма тилкесинде кол менен жаба алат, бирок бул чанда гана болот.

Ошентип, жалпысынан фондо процесстерди башкаруунун кереги жок, анткени система аларга өзү кам көрөт. Ошондуктан iOS ушунчалык жаңы жана тез система.

Иштеп чыгуучунун көз карашы боюнча

Колдонмо көп тапшырманын бир бөлүгү катары жалпысынан алты түрдүү абалга жооп бере алат:

1. applicationWillResignActive

Котормодо бул абал тиркеме келечекте (бир нече миллисекундда) активдүү тиркеме (б.а. алдыңкы пландагы тиркеме) болуу кызматынан баш тарта турганын билдирет. Бул, мисалы, тиркемени колдонуу учурунда чалууну кабыл алууда болот, бирок ошол эле учурда, бул ыкма ошондой эле тиркеме фонго өткөнгө чейин бул абалды жаратат, андыктан бул өзгөртүүлөрдү эске алуу керек. Бул ыкма ошондой эле ылайыктуу, мисалы, ал кирген чалуу болгондо аткарып жаткан бардык аракеттерди токтотуп, чалуунун аягына чейин күтөт.

2. applicationDidEnterBackground

Статус колдонмо фонго өткөнүн көрсөтөт. Иштеп чыгуучулар бул ыкманы сөзсүз түрдө фондо иштетүүнү талап кылбаган бардык процесстерди токтотуу жана пайдаланылбаган маалыматтардын жана башка процесстердин эс тутумун тазалоо үчүн колдонушу керек, мисалы, мөөнөтү бүтүп жаткан таймерлер, эстутумдан жүктөлгөн сүрөттөрдү сөзсүз түрдө талап кылынбай турган же жабуу. серверлер менен байланыштар, эгерде тиркеме үчүн фондо туташууларды аяктоо өтө маанилүү болбосо. Метод тиркемеде чакырылганда, ал негизинен колдонмону толугу менен токтотуу үчүн колдонулушу керек, эгерде анын кандайдыр бир бөлүгү фондо иштөө үчүн талап кылынбаса.

3. applicationWillEnterForeground

Бул абал биринчи абалга карама-каршы келет, мында колдонмо активдүү абалга өтөт. Мамлекет жөн гана уктап жаткан колдонмо фондо уланып, кийинки бир нече миллисекундда алдыңкы планда пайда болот дегенди билдирет. иштеп чыгуучулар бул ыкманы тиркеме фондо турганда жигердүү эмес процесстерди улантуу үчүн колдонушу керек. Колдонуучу жүктөлгөн тиркемени кайра көрө электе эле серверлерге туташуулар кайра түзүлүшү керек, таймерлер баштапкы абалга келтирилиши керек, сүрөттөр жана маалыматтар эстутумга жүктөлөт жана башка керектүү процесстер кайра башталышы мүмкүн.

4. applicationDidBecomeActive

Мамлекет тиркеме алдыңкы планга калыбына келтирилгенден кийин жаңы эле активдүү болуп калганын көрсөтөт. Бул колдонуучу интерфейсине кошумча оңдоолорду киргизүү же UIди баштапкы абалына келтирүү ж.б. үчүн колдонулушу мүмкүн болгон ыкма. Бул иш жүзүндө колдонуучу тиркемени дисплейде көрүп турган учурда болот, андыктан аны колдонуу керек. бул ыкмада жана мурунку ыкмада эмне болорун этияттык менен аныктаңыз. Алар бир нече миллисекунддук айырма менен биринин артынан бири аталат.

5. applicationWillTerminate

Бул абал колдонмо чыгуудан бир нече миллисекунд мурун, башкача айтканда, колдонмо иш жүзүндө токтогонго чейин болот. Көп тапшырмадан кол менен же аппаратты өчүрүп жатканда. Метод иштетилген маалыматтарды сактоо, бардык аракеттерди токтотуу жана мындан ары кереги жок болгон маалыматтарды жок кылуу үчүн колдонулушу керек.

6. applicationDidReceiveMemoryWarning

Бул эң көп талкууланган акыркы мамлекет. Ал керек болсо, тутумдук ресурстарды керексиз колдонсо, колдонмону iOS эстутумунан алып салуу үчүн жооп берет. Мен iOS'тун фондук колдонмолор менен эмне кыларын так билбейм, бирок ага ресурстарды башка процесстерге чыгаруу үчүн колдонмо керек болсо, ал эстутум эскертүүсү менен анын бардык ресурстарын чыгарууну сунуштайт. Ошентип, бул ыкма колдонмодо деп аталат. Иштеп чыгуучулар аны тиркеме өзүнө бөлүп берген эстутумдан баш тартуусу, аткарылып жаткан нерселердин бардыгын сактап калуу, керексиз маалыматтарды эстутумдан тазалоо жана башкача түрдө эстутумду адекваттуу бошотушу үчүн ишке ашыруусу керек. Чынында, көптөгөн иштеп чыгуучулар, жада калса жаңыдан баштагандар да мындай нерселер жөнүндө ойлонушпайт же түшүнүшпөйт, анан алардын тиркемеси батарейканын иштөө мөөнөтүнө коркунуч туудурат жана/же система ресурстарын керексиз түрдө, атүгүл фондо керектөөгө алып келиши мүмкүн.

Өкүм

Бул алты абал жана аларга байланыштуу ыкмалар iOS'тогу бардык "көп тапшырмалардын" фонунда. бул эң сонун система, эгерде иштеп чыгуучулар алардын колдонуучуларынын түзмөктөрүндө тиркеме эмнелерди ыргытса, алар кичирейтилсе же системадан эскертүү алса жана башкалар үчүн жоопкерчиликтүү болуу зарылчылыгы бар экенин этибарга албаса.

Маалымат булагы: macworld.com

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

 
Сиздин да чече турган көйгөйүңүз барбы? Сизге кеңеш керекпи же туура колдонмону табасызбы? Бөлүмдөгү форма аркылуу биз менен байланышуудан тартынбаңыз Кеңеш берүү, кийинки жолу сурооңузга жооп беребиз.

.