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

iOS жүйесінде көп тапсырманы орындау қалай жұмыс істейтінін білмейтіндер әлі де көп. Алдымен, бұл нақты көп тапсырма емес, жүйеге немесе пайдаланушыға ауыртпалық түсірмейтін өте ақылды шешім екенін атап өткен жөн.

iOS жүйесінде фондық режимде жұмыс істейтін қолданбалар операциялық жадты толтырады деген ырымдарды жиі естуге болады, бұл жүйенің баяулауына және батареяның қызмет ету мерзіміне әкеледі, сондықтан пайдаланушы оларды қолмен өшіруі керек. Көптапсырмалар тақтасында барлық іске қосылған фондық процестердің тізімі емес, тек ең соңғы іске қосылған қолданбалар бар. Сондықтан пайдаланушы кейбір жағдайлардан басқа фондық режимде жұмыс істейтін процестер туралы алаңдамауы керек. Басты түймесін басқан кезде, қолданба әдетте ұйқы режиміне өтеді немесе жабылады, осылайша ол бұдан былай процессорды немесе батареяны жүктемейді және қажет болса, қажетті жадты босатады.

Сондықтан бұл сізде ондаған процестер орындалған кезде толыққанды көп тапсырма емес.Тек бір қолданба әрқашан алдыңғы қатарда жұмыс істейді, ол кідіртіледі немесе қажет болған жағдайда толығымен өшіріледі. Фондық режимде тек бірнеше қосымша процестер орындалады. Сондықтан iOS жүйесінде қолданбаның істен шығуын сирек кездестіресіз, мысалы, Android жұмыс істеп тұрған қолданбаларға толып кетті, оны қолданушы қарауы керек. Бір жағынан, бұл құрылғымен жұмыс істеуді жағымсыз етеді, ал екінші жағынан, мысалы, баяу іске қосуды және қолданбалар арасындағы ауысуды тудырады.

Қолданбаның орындалу уақыты түрі

iOS құрылғыңыздағы қолданба осы 5 күйдің бірінде:

  • Жүгіру: қолданба іске қосылып, алдыңғы қатарда жұмыс істейді
  • Фон: ол әлі жұмыс істейді, бірақ фондық режимде жұмыс істейді (басқа қолданбаларды пайдалана аламыз)
  • Уақытша тоқтатылды: ЖЖҚ әлі де қолданылуда, бірақ жұмыс істемейді
  • Белсенді емес: қолданба жұмыс істеп тұр, бірақ жанама пәрмендер (мысалы, қолданба іске қосылған кезде құрылғыны құлыптаған кезде)
  • Жұмыс істемейді: Қолданба тоқтатылды немесе басталмады

Мазаламау үшін қолданба фонға өткенде шатасу пайда болады. Басты түймесін басқанда немесе қолданбаны (iPad) жабу үшін қимылды пайдаланғанда, қолданба фондық режимге өтеді. Қолданбалардың көпшілігі бірнеше секунд ішінде тоқтатылады (Олар iDevice жедел жадында сақталады, сондықтан олар жылдам іске қосылады, олар процессорды көп жүктемейді және осылайша батареяның қызмет ету мерзімін үнемдейді) Егер қолданба жадты пайдалануды жалғастыра берсе, сізде оны босату үшін қолмен жою. Бірақ мұны істеудің қажеті жоқ, өйткені iOS мұны сіз үшін жасайды. Егер сізде фондық режимде тоқтатылған талап етілетін қолданба болса, мысалы, үлкен оперативті жадты пайдаланатын ойын, қажет болғанда iOS оны автоматты түрде жадтан жояды және қолданба белгішесін түрту арқылы оны қайта іске қосуға болады.

Бұл күйлердің ешқайсысы көп тапсырма жолағында көрсетілмейді, қолданба тоқтатылғанына, кідіртілгеніне немесе фондық режимде жұмыс істеп тұрғанына қарамастан, панель тек жақында іске қосылған қолданбалардың тізімін көрсетеді. Сондай-ақ, қазір жұмыс істеп тұрған қолданбаның Көп тапсырма тақтасында көрсетілмейтінін байқауыңыз мүмкін

Фондық тапсырмалар

Әдетте, «Негізгі» түймесін басқан кезде қолданба фондық режимде жұмыс істейді, ал егер оны пайдаланбасаңыз, ол бес секунд ішінде автоматты түрде кідіртіледі. Сондықтан, мысалы, подкастты жүктеп алып жатсаңыз, жүйе оны жұмыс істеп тұрған қолданба ретінде бағалайды және тоқтатуды он минутқа кешіктіреді. Кем дегенде он минуттан кейін процесс жадтан босатылады. Қысқасы, жүктеп алуды аяқтау үшін 10 минуттан артық уақыт кетпесе, «Негізгі» түймесін басу арқылы жүктеуді тоқтату туралы алаңдамаудың қажеті жоқ.

Фондағы белгісіз жүгіру

Әрекетсіздік жағдайында жүйе қолданбаны бес секунд ішінде тоқтатады, ал жүктеп алған жағдайда тоқтату он минутқа кешіктіріледі. Дегенмен, фондық режимде жұмыс істеуді қажет ететін қолданбалардың аз саны бар. Төменде iOS 5 жүйесінде фондық режимде шексіз жұмыс істей алатын қолданбалардың кейбір мысалдары берілген:

  • Дыбысты ойнататын және біраз уақытқа үзілуі керек қолданбалар (телефон қоңырауы кезінде музыканы кідірту, т.б.),
  • Орналасқан жеріңізді бақылайтын қолданбалар (навигациялық бағдарламалық құрал),
  • VoIP қоңырауларын қабылдайтын қолданбалар, мысалы, Skype қолданбасын пайдалансаңыз, қолданба фондық режимде болса да қоңырауды қабылдай аласыз,
  • Автоматты жүктеулер (мысалы, Newsstand).

Барлық қолданбалар тапсырманы орындамайтын болса (мысалы, фондық жүктеулер) жабылуы керек. Дегенмен, жергілікті пошта қолданбасы сияқты фондық режимде үздіксіз жұмыс істейтін ерекше жағдайлар бар. Егер олар фондық режимде жұмыс істеп тұрса, олар жадты, процессорды пайдалануды алады немесе батареяның қызмет ету мерзімін қысқартады

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

Жоғарыда айтқанымдай, пайдаланушыға фондық режимде жұмыс істейтін қолданбаларды жабудың қажеті жоқ. Мұның жалғыз ерекшелігі - фондық режимде жұмыс істеп тұрған қолданбаның құлауы немесе ұйқыдан дұрыс оянбауы. Содан кейін пайдаланушы көп тапсырма жолағында қолданбаларды қолмен жаба алады, бірақ бұл сирек болады.

Осылайша, жалпы алғанда, фондық процестерді басқарудың қажеті жоқ, өйткені жүйе оларды өзі реттейді. Сондықтан iOS өте жаңа және жылдам жүйе.

Әзірлеушінің көзқарасы бойынша

Қолданба көп тапсырманың бөлігі ретінде барлығы алты түрлі күймен әрекет ете алады:

1. applicationWillResignActive

Аудармада бұл күй қолданбаның болашақта (бірнеше миллисекунд мәселесі) белсенді қолданба (яғни алдыңғы қатардағы қолданба) ретінде жұмыстан шығатынын білдіреді. Бұл, мысалы, қолданбаны пайдалану кезінде қоңырауды қабылдау кезінде орын алады, бірақ сонымен бірге бұл әдіс қолданба фондық режимге өткенге дейін осы күйді тудырады, сондықтан бұл өзгерістерді ескеру қажет. Бұл әдіс, мысалы, кіріс қоңырау болған кезде орындайтын барлық әрекеттерді тоқтата тұру және қоңыраудың соңына дейін күту үшін де қолайлы.

2. applicationDidEnterBackground

Күй қолданбаның фондық режимге өткенін көрсетеді. Әзірлеушілер бұл әдісті міндетті түрде фондық режимде іске қосуды қажет етпейтін барлық процестерді тоқтата тұру және пайдаланылмаған деректер мен басқа процестердің жадын тазалау үшін қолдануы керек, мысалы, мерзімі біткен таймерлер, міндетті түрде қажет болмайтын жадтан жүктелген кескіндерді тазалау немесе жабу. қолданба үшін фондық режимде қосылымдарды аяқтау маңызды болмаса, серверлермен қосылымдар. Әдіс қолданбада шақырылған кезде, оның кейбір бөлігі фондық режимде іске қосылуы қажет болмаса, ол қолданбаны толығымен тоқтата тұру үшін пайдаланылуы керек.

3. applicationWillEnterForeground

Бұл күй қолданба белсенді күйге ауысатын бірінші күйге қарама-қарсы. Күй жай ғана ұйықтайтын қолданбаның фондық режимнен басталып, келесі миллисекундтарда алдыңғы қатарда пайда болатынын білдіреді. әзірлеушілер бұл әдісті қолданба фондық режимде болған кезде белсенді емес кез келген процестерді жалғастыру үшін пайдалануы керек. Серверлерге қосылымдарды қалпына келтіру керек, таймерлер қалпына келтірілу керек, суреттер мен деректер жадқа жүктеледі және басқа да қажетті процестер пайдаланушы жүктелген қолданбаны қайта көрмес бұрын ғана жалғаса алады.

4. applicationDidBecomeActive

Күй қолданбаның алдыңғы қатарға қалпына келтірілгеннен кейін ғана белсенді болғанын көрсетеді. Бұл пайдаланушы интерфейсіне қосымша түзетулер енгізу немесе UI бастапқы күйіне қайтару және т.б. үшін пайдаланылуы мүмкін әдіс. Бұл шын мәнінде пайдаланушы дисплейде қолданбаны көріп тұрған сәтте орын алады, сондықтан оны орындау қажет. осы әдісте және алдыңғы әдісте не болатынын сақтықпен анықтаңыз. Олар бірнеше миллисекундтық айырмашылықпен бірінен соң бірі шақырылады.

5. қолданба тоқтатылады

Бұл күй қолданбадан шығудан бірнеше миллисекунд бұрын, яғни қолданба іс жүзінде аяқталмай тұрып орын алады. Көп тапсырмадан қолмен немесе құрылғыны өшірген кезде. Әдіс өңделген деректерді сақтау, барлық әрекеттерді аяқтау және енді қажет болмайтын деректерді жою үшін қолданылуы керек.

6. applicationDidReceiveMemoryWarning

Бұл ең көп талқыланатын соңғы күй. Ол қажет болған жағдайда жүйелік ресурстарды қажетсіз пайдаланатын болса, қолданбаны iOS жадынан жоюға жауапты. Мен iOS-тың фондық қолданбалармен не істейтінін нақты білмеймін, бірақ ол басқа процестерге ресурстарды шығару үшін қолданба қажет болса, ол оған кез келген ресурстарды шығару туралы жад ескертуімен шақырады. Сондықтан бұл әдіс қолданбада шақырылады. Әзірлеушілер оны қолданба бөлінген жадтан бас тартуы, орындалып жатқанның бәрін сақтауы, қажет емес деректерді жадтан тазартуы және басқаша жадты жеткілікті түрде босатуы үшін оны жүзеге асыруы керек. Рас, көптеген әзірлеушілер, тіпті жаңадан бастағандар да мұндай нәрселер туралы ойламайды немесе түсінбейді, содан кейін олардың қолданбасы батареяның қызмет ету мерзіміне қауіп төндіруі және/немесе тіпті фондық режимде жүйелік ресурстарды қажетсіз тұтынуы мүмкін.

Үкім

Осы алты күй және олармен байланысты әдістер iOS жүйесіндегі барлық «көп тапсырманың» фоны болып табылады. Бұл тамаша жүйе, егер әзірлеушілер қолданбаның пайдаланушылардың құрылғыларында пайда болатынына, егер олар кішірейтілгеніне немесе жүйеден ескертулер алатынына және т.б. жауапкершілікті қажет ететінін елемейді.

Дерек көзі: Macworld.com

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

 
Сізде де шешетін мәселе бар ма? Сізге кеңес керек пе немесе дұрыс қолданбаны табу керек пе? Бөлімдегі пішін арқылы бізбен байланысудан тартынбаңыз Кеңес беру, келесі жолы сұрағыңызға жауап береміз.

.