Փակել գովազդը

Դեռ շատ մարդիկ կան, ովքեր չգիտեն, թե ինչպես է աշխատում բազմաֆունկցիոնալ աշխատանքը iOS-ում: Սկսելու համար, սակայն, հարկ է նշել, որ սա իրական բազմաֆունկցիոնալություն չէ, այլ շատ խելացի լուծում, որը չի ծանրաբեռնում համակարգը կամ օգտագործողին:

Հաճախ կարելի է լսել սնահավատություն, որ iOS-ի հետին պլանում աշխատող հավելվածները լցնում են օպերացիոն հիշողությունը, ինչը հանգեցնում է համակարգի դանդաղեցման և մարտկոցի աշխատանքին, ուստի օգտատերը պետք է դրանք անջատի ձեռքով: Բազմակի առաջադրանքների սանդղակը իրականում չի պարունակում բոլոր գործող ֆոնային գործընթացների ցանկը, այլ միայն վերջին գործարկված հավելվածները: Այսպիսով, օգտվողը չպետք է անհանգստանա հետին պլանում աշխատող գործընթացներից, բացառությամբ մի քանի դեպքերի: Երբ սեղմում եք Home կոճակը, հավելվածը սովորաբար անցնում է քնելու կամ փակվում, այնպես որ այն այլևս չի բեռնում պրոցեսորը կամ մարտկոցը և անհրաժեշտության դեպքում ազատում է անհրաժեշտ հիշողությունը:

Այսպիսով, սա լիարժեք բազմաբնույթ առաջադրանք չէ, երբ դուք ունեք տասնյակ պրոցեսներ, որոնք աշխատում են առաջին պլանում, որն անհրաժեշտության դեպքում դադարեցվում է կամ ամբողջությամբ անջատվում: Միայն մի քանի երկրորդական գործընթացներ են աշխատում հետին պլանում: Ահա թե ինչու iOS-ում հազվադեպ կհանդիպեք հավելվածի խափանման, օրինակ՝ Android-ը ծանրաբեռնված է գործարկվող հավելվածներով, որոնց մասին պետք է հոգ տանի օգտատերը: Սա մի կողմից տհաճ է դարձնում սարքի հետ աշխատելը, իսկ մյուս կողմից՝ առաջացնում է, օրինակ, դանդաղ գործարկում և անցումներ հավելվածների միջև։

Հավելվածի գործարկման ժամանակի տեսակը

Ձեր iOS սարքի հավելվածը գտնվում է այս 5 վիճակներից մեկում.

  • Վազում: հավելվածը սկսվում է և աշխատում է առաջին պլանում
  • Նախապատմություն: այն դեռ աշխատում է, բայց աշխատում է հետին պլանում (մենք կարող ենք օգտագործել այլ հավելվածներ)
  • Կասեցված է՝ Դեռ օգտագործում է RAM, բայց չի աշխատում
  • Ոչ ակտիվ: հավելվածը աշխատում է, բայց անուղղակի հրամաններ (օրինակ, երբ դուք կողպում եք սարքը, երբ հավելվածն աշխատում է)
  • Չի աշխատում. Դիմումը դադարեցվել է կամ չի սկսվել

Խառնաշփոթն առաջանում է, երբ հավելվածը մտնում է ֆոն, որպեսզի չխանգարի: Երբ սեղմում եք Home կոճակը կամ օգտագործում եք ժեստը՝ հավելվածը փակելու համար (iPad), հավելվածը անցնում է հետին պլան: Հավելվածների մեծ մասը կասեցվում է վայրկյանների ընթացքում (դրանք պահվում են iDevice-ի RAM-ում, որպեսզի արագ գործարկվեն, չեն բեռնում պրոցեսորը և այդպիսով խնայում են մարտկոցի կյանքը): Կարող եք մտածել, որ եթե հավելվածը շարունակի օգտագործել հիշողությունը, դուք ունեք ձեռքով ջնջել այն ազատելու համար: Բայց դուք չպետք է դա անեք, քանի որ iOS-ը դա կանի ձեր փոխարեն: Եթե ​​դուք ունեք պահանջկոտ հավելված, որը կասեցված է հետին պլանում, օրինակ՝ խաղ, որն օգտագործում է մեծ քանակությամբ RAM, iOS-ն ավտոմատ կերպով կհեռացնի այն հիշողությունից, երբ անհրաժեշտ լինի, և դուք կարող եք այն վերագործարկել՝ հպելով հավելվածի պատկերակին:

Այս վիճակներից և ոչ մեկը չի արտացոլվում բազմաբնույթ առաջադրանքների տողում, վահանակը ցույց է տալիս միայն վերջերս գործարկված հավելվածների ցանկը՝ անկախ նրանից՝ հավելվածը դադարեցված է, դադարեցված է կամ աշխատում է հետին պլանում: Կարող եք նաև նկատել, որ ներկայումս գործող հավելվածը չի հայտնվում Multitasking վահանակում

Ֆոնային առաջադրանքներ

Սովորաբար, երբ սեղմում եք Home կոճակը, հավելվածը կաշխատի հետին պլանում, և եթե այն չեք օգտագործում, այն ավտոմատ կերպով կդադարեցվի հինգ վայրկյանի ընթացքում: Այսպիսով, եթե դուք, օրինակ, փոդքաստ եք ներբեռնում, համակարգը այն գնահատում է որպես գործող հավելված և հետաձգում է դադարեցումը տասը րոպեով: Ամենաուշը տասը րոպե հետո գործընթացը ազատվում է հիշողությունից: Մի խոսքով, դուք չպետք է անհանգստանաք ձեր ներբեռնումն ընդհատելու մասին՝ սեղմելով Home կոճակը, եթե այն ավարտելու համար 10 րոպեից ավելի չի պահանջվում:

Հետին պլանում անորոշ վազք

Անգործության դեպքում համակարգը դադարեցնում է հավելվածը հինգ վայրկյանի ընթացքում, իսկ ներբեռնումների դեպքում դադարեցումը հետաձգվում է տասը րոպեով։ Այնուամենայնիվ, կան փոքր թվով հավելվածներ, որոնք պահանջում են աշխատել հետին պլանում: Ահա հավելվածների մի քանի օրինակներ, որոնք կարող են անորոշ ժամանակով աշխատել ֆոնին iOS 5-ում.

  • Հավելվածներ, որոնք ձայն են նվագում և պետք է որոշ ժամանակով ընդհատվեն (երաժշտության դադարեցում հեռախոսազանգի ժամանակ և այլն),
  • Ձեր գտնվելու վայրը հետևող հավելվածներ (նավիգացիոն ծրագրակազմ),
  • VoIP զանգեր ստացող հավելվածները, օրինակ, եթե օգտվում եք Skype-ից, կարող եք զանգ ստանալ նույնիսկ այն դեպքում, երբ հավելվածը հետին պլանում է,
  • Ավտոմատ ներբեռնումներ (օրինակ՝ Մամուլի կրպակ):

Բոլոր հավելվածները պետք է փակվեն, եթե այլևս առաջադրանք չեն կատարում (օրինակ՝ ֆոնային ներբեռնումներ): Այնուամենայնիվ, կան բացառություններ, որոնք անընդհատ աշխատում են հետին պլանում, օրինակ՝ հայրենի Mail հավելվածը: Եթե ​​դրանք աշխատում են հետին պլանում, դրանք խլում են հիշողությունը, պրոցեսորի օգտագործումը կամ նվազեցնում մարտկոցի կյանքը

Հավելվածները, որոնց թույլատրվում է անժամկետ աշխատել ֆոնային ռեժիմում, կարող են անել այն ամենը, ինչ անում են գործարկման ընթացքում՝ սկսած երաժշտություն նվագարկելուց մինչև Podcast-ի նոր դրվագներ ներբեռնելը:

Ինչպես նախկինում նշեցի, օգտատերը երբեք կարիք չունի փակելու հետին պլանում աշխատող հավելվածները: Սրա միակ բացառությունն այն է, երբ հետին պլանում աշխատող հավելվածը խափանում է կամ ճիշտ չի արթնանում քնից: Այնուհետև օգտագործողը կարող է ձեռքով փակել հավելվածները բազմաբնույթ առաջադրանքների տողում, բայց դա հազվադեպ է պատահում:

Այսպիսով, ընդհանուր առմամբ, ձեզ հարկավոր չէ կառավարել ֆոնային գործընթացները, քանի որ համակարգը ինքն է հոգ տանելու դրանց մասին: Ահա թե ինչու iOS-ը այդքան թարմ և արագ համակարգ է:

Մշակողի տեսանկյունից

Հավելվածը կարող է արձագանքել ընդհանուր առմամբ վեց տարբեր վիճակներով՝ որպես բազմաբնույթ առաջադրանքների մաս.

1. applicationWillResignActive

Թարգմանության մեջ այս վիճակը նշանակում է, որ հայտը կհրաժարվի որպես ակտիվ հավելված (այսինքն՝ դիմումը առաջին պլանում) ապագայում (մի քանի միլիվայրկյան): Դա տեղի է ունենում, օրինակ, հավելվածից օգտվելիս զանգ ստանալիս, բայց միևնույն ժամանակ, այս մեթոդը նաև առաջացնում է այս վիճակը մինչև հավելվածը հետին պլան անցնելը, այնպես որ դուք պետք է հաշվի առնեք այս փոփոխությունները: Այս մեթոդը հարմար է նաև այնպես, որ, օրինակ, այն դադարեցնի իր կատարած բոլոր գործողությունները, երբ կա մուտքային զանգ և սպասի մինչև զանգի ավարտը:

2. applicationDidEnterBackground

Կարգավիճակը ցույց է տալիս, որ հավելվածը մտել է հետին պլան: Մշակողները պետք է օգտագործեն այս մեթոդը՝ կասեցնելու բոլոր գործընթացները, որոնք պարտադիր չէ, որ գործարկվեն հետին պլանում և մաքրեն հիշողությունը չօգտագործված տվյալներից և այլ գործընթացներից, ինչպիսիք են ժամկետանց ժամաչափերը, բեռնված պատկերները մաքրելու հիշողությունից, որոնք պարտադիր չեն, կամ փակելու համար։ կապեր սերվերների հետ, բացառությամբ այն դեպքերի, երբ հավելվածի համար կարևոր չէ հետին պլանում միացումներ կատարելը: Երբ մեթոդը կանչվում է հավելվածում, այն հիմնականում պետք է օգտագործվի՝ հավելվածն ամբողջությամբ կասեցնելու համար, եթե դրա որոշ մասը չի պահանջվում գործարկել ֆոնային ռեժիմում:

3. applicationWillEnterForeground

Այս նահանգը հակառակն է առաջին պետության, որտեղ դիմումը դուրս կգա ակտիվ վիճակից։ Վիճակը պարզապես նշանակում է, որ քնելու հավելվածը կվերսկսվի ֆոնից և կհայտնվի առաջին պլանում մոտակա միլիվայրկյանների ընթացքում: ծրագրավորողները պետք է օգտագործեն այս մեթոդը՝ վերսկսելու բոլոր գործընթացները, որոնք անգործուն են եղել, երբ հավելվածը հետին պլանում էր: Սերվերների հետ կապերը պետք է վերականգնվեն, ժամանակաչափերը զրոյացվեն, պատկերները և տվյալները բեռնվեն հիշողության մեջ, և այլ անհրաժեշտ գործընթացները կարող են վերսկսվել հենց օգտատերը բեռնված հավելվածը նորից տեսնելուց անմիջապես առաջ:

4. applicationDidBecomeActive

Պետությունը ցույց է տալիս, որ հավելվածը նոր է ակտիվացել առաջին պլանում վերականգնվելուց հետո: Սա մեթոդ է, որը կարող է օգտագործվել օգտատիրոջ միջերեսում լրացուցիչ ճշգրտումներ անելու կամ UI-ն իր սկզբնական վիճակին վերականգնելու համար և այլն: Սա իրականում տեղի է ունենում այն ​​պահին, երբ օգտվողն արդեն տեսնում է հավելվածը էկրանին, ուստի անհրաժեշտ է. զգուշությամբ որոշեք, թե ինչ է տեղի ունենում այս և նախորդ մեթոդի մեթոդով: Դրանք կոչվում են մեկը մյուսի հետևից մի քանի միլիվայրկյան տարբերությամբ։

5. հավելվածը կդադարեցվի

Այս վիճակը տեղի է ունենում հավելվածի դուրս գալուց մի քանի միլիվայրկյան առաջ, այսինքն՝ մինչև հավելվածն իրականում դադարեցվի: Կամ ձեռքով մի քանի առաջադրանք կատարելուց կամ սարքն անջատելիս: Մեթոդը պետք է օգտագործվի մշակված տվյալները պահպանելու, բոլոր գործողություններն ավարտելու և այն տվյալները ջնջելու համար, որոնք այլևս կարիք չեն ունենա:

6. applicationDidReceiveMemoryWarning

Դա ամենաքննարկվող վերջին պետությունն է։ Այն պատասխանատու է, անհրաժեշտության դեպքում, հավելվածը iOS-ի հիշողությունից հեռացնելու համար, եթե այն անհարկի օգտագործում է համակարգի ռեսուրսները: Ես չգիտեմ, թե կոնկրետ ինչ է անում iOS-ը ֆոնային հավելվածների հետ, բայց եթե նրան անհրաժեշտ է հավելված՝ ռեսուրսներ այլ գործընթացների համար ազատելու համար, այն հուշում է նրան հիշողության նախազգուշացումով՝ թողարկելու իր ունեցած ռեսուրսները: Այսպիսով, այս մեթոդը կոչվում է հավելվածում: Մշակողները պետք է այն իրականացնեն այնպես, որ հավելվածը հրաժարվի իր հատկացված հիշողությունից, պահպանի այն ամենը, ինչ ընթացքի մեջ է, մաքրի ավելորդ տվյալները հիշողությունից և հակառակ դեպքում համարժեք ազատի հիշողությունը: Ճիշտ է, շատ ծրագրավորողներ, նույնիսկ սկսնակները, չեն մտածում կամ չեն հասկանում նման բաները, և հետո կարող է պատահել, որ նրանց հավելվածը սպառնում է մարտկոցի կյանքին և/կամ անհարկի սպառում համակարգի ռեսուրսները, նույնիսկ հետին պլանում:

Դատավճիռ

Այս վեց վիճակները և դրանց առնչվող մեթոդները iOS-ի բոլոր «բազմ առաջադրանքների» ֆոնն են: դա հիանալի համակարգ է, քանի դեռ ծրագրավորողները չեն անտեսում այն ​​փաստը, որ անհրաժեշտ է պատասխանատու լինել այն մասին, թե ինչ է հավելվածը նետում իրենց օգտատերերի սարքերին, եթե դրանք նվազագույնի են հասցվել կամ համակարգից նախազգուշացումներ ստանալ և այլն:

Աղբյուրը ` Macworld.com

Հեղինակներ: Յակուբ Պոզարեկ, Մարտին Դուբեկ (ArnieX)

 
Դուք էլ ունե՞ք լուծելու խնդիր։ Խորհրդատվության կարիք ունե՞ք կամ գուցե գտնեք ճիշտ հավելվածը: Մի հապաղեք կապվել մեզ հետ բաժնում նշված ձևի միջոցով Խորհրդատվություն, հաջորդ անգամ կպատասխանենք ձեր հարցին։

.