Усе мы ведаем урок «шматзадачнасць = магчымасць выконваць некалькі працэсаў адначасова». Мы выкарыстоўваем яго ў нашых камп'ютарах, асабліва не ўсведамляючы яго прысутнасці. Пераключэнне паміж праграмамі або вокнамі адной праграмы адбываецца (для нас) у рэжыме рэальнага часу, і мы прымаем гэтую магчымасць аперацыйнай сістэмы як належнае.
Задача розная
Аперацыйная сістэма размяркоўвае працэсар для ўсіх прыкладанняў праз невялікія прамежкі часу. Гэтыя прамежкі часу настолькі малыя, што мы не можам іх заўважыць, таму здаецца, што ўсе праграмы выкарыстоўваюць працэсар адначасова. Мы можам так падумаць шматзадачнасць у iOS 4 працуе сапраўды гэтак жа. Гэта ня так. Асноўная прычына - гэта, вядома, ёмістасць батарэі. Калі б усе прыкладанні сапраўды заставаліся працаваць у фонавым рэжыме, нам, верагодна, прыйшлося б шукаць сокет праз некалькі гадзін.
Большасць праграм, сумяшчальных з iOS 4, пераводзяцца ў «прыпынены рэжым» або ў спячы рэжым пасля націску кнопкі «Дадому». Аналогіяй можа служыць закрыццё вечка ноўтбука, які адразу пераходзіць у спячы рэжым. Пасля адкрыцця вечка ноўтбук выходзіць з рэжыму сну, і ўсё знаходзіцца ў такім жа стане, як і да закрыцця вечка. Акрамя таго, ёсць прыкладанні, дзе націсканне кнопкі "Дадому" прыводзіць да іх завяршэння. І пад гэтым мы маем на ўвазе сапраўднае спыненне. У распрацоўшчыкаў ёсць выбар, які з гэтых метадаў выкарыстоўваць.
Але ёсць яшчэ адна катэгорыя прыкладанняў. Гэта праграмы, якія сапраўды працуюць у фонавым рэжыме, нават калі вы робіце нешта зусім іншае на вашым iDevice. Skype з'яўляецца добрым прыкладам, таму што яму неабходна пастаяннае падключэнне да Інтэрнэту. Іншымі прыкладамі могуць быць праграмы, якія прайграваюць фонавую музыку (Pandora), або праграмы, якія патрабуюць пастаяннага выкарыстання GPS. Так, гэтыя праграмы разраджаюць батарэю, нават калі працуюць у фонавым рэжыме.
Спаць ці збіць?
Пэўныя прыкладанні, сумяшчальныя з iOS 4, якія пасля націскання кнопкі «Дадому» павінны быць пераведзены ў спячы рэжым (пераведзены ў «прыпынены рэжым»), працягваюць працаваць у фонавым рэжыме. Apple дала распрацоўшчыкам роўна дзесяць хвілін, каб праграма выканала сваю задачу, якой бы яна ні была. Дапусцім, вы спампоўваеце файл у GoodReader. Раптам нехта хоча патэлефанаваць вам, і вы проста павінны прыняць гэты важны званок. Званок не доўжыўся больш за дзесяць хвілін, вы вернецеся ў дадатак GoodReader. Магчыма, файл ужо спампаваны або яшчэ спампоўваецца. Што рабіць, калі званок доўжыцца больш за дзесяць хвілін? Праграма, у нашым выпадку GoodReader, павінна спыніць сваю дзейнасць і паведаміць iOS, што яе можна перавесці ў рэжым сну. Калі яна гэтага не зробіць, яе бязлітасна ліквідуе сама iOS.
Цяпер вы ведаеце розніцу паміж "мабільнай" і "настольнай" шматзадачнасцю. У той час як плаўнасць і хуткасць пераключэння паміж праграмамі важныя для кампутара, тэрмін службы батарэі заўсёды з'яўляецца самым важным для мабільных прылад. Шматзадачнасць таксама трэба было адаптаваць да гэтага факту. Такім чынам, пасля прачытання гэтага артыкула, калі вы двойчы націснеце кнопку Home, вы больш не ўбачыце «панэль прыкладанняў, якія працуюць у фонавым рэжыме», а, па сутнасці, толькі «спіс нядаўна выкарыстаных праграм».
Аўтар: Даніэль Грушкакрыніца: onemoretap.com
хм, цікава :) Я заўсёды думаў, што гэта заўсёды падобна на тое, як гэта можна зрабіць у Unix. Прыкладанню не выдзелены працэсарны час, а працэс проста знаходзіцца ў памяці, усе рэсурсы выдзелены. так што мне прыйшлося двойчы націснуць дадому і неадкладна спыніць прыкладанне, каб выдаліць яго. Такім чынам, ці азначае гэта, што нават калі ёсць значок прыкладання ў ніжнім схаваным аркушы, праграма ўсё роўна закрыта даўно (праз 10 хвілін)?
У ніжнім спісе ёсць толькі апошнія адкрытыя праграмы, пры гэтым некаторыя з іх усё яшчэ могуць працаваць, некаторыя прыпыненыя, а некаторыя цалкам спыненыя. Ручное выдаленне прыкладання са спісу мае "пабочны эфект": калі яно запушчана (або прыпынена), яно будзе спынена.
Прыкладанне павінна само расказаць пра гэтыя 10 дадатковых хвілін, і няма гарантыі, што яно іх атрымае.
Ну, гэта не пазбавіла маёй апантанасці закрыццём прыкладання са спісу (што, калі яно выпадкова з'ядае рэсурсы, так? :-D)
Наколькі я разумею, гэтыя 10 хвілін прызначаны для праграм, якія павінны працаваць у фонавым рэжыме і не адносяцца да катэгорыі "скайп, GPS і прайграванне музыкі". Іншыя праграмы пераключаюцца ў прыпынены рэжым і застаюцца ў памяці, пакуль памяць не спатрэбіцца для іншых спраў.
Перавага прыпыненага рэжыму заключаецца ў тым, што калі вам спатрэбіцца закрыць прыкладанне, вы не страціце яго дадзеныя, усё будзе захавана ў момант пераключэння ў рэжым прыпынення.
або, напрыклад, у выпадку прайгравання, эквівалент каманды bg / fg
А як наконт прайгравальніка або іншых праграм, якія працуюць у фонавым рэжыме на працягу любога часу? Я маю на ўвазе, ці магу я "выбіраць" у якасці распрацоўшчыка, ці гэта павінна быць ухвалена неяк Apple?
Каб праграма сапраўды працавала ў фонавым рэжыме неабмежаваны час, яна павінна выканаць (зарэгістравацца) адно з наступных дзеянняў:
- Выкарыстоўвайце паслугі вызначэння месцазнаходжання (GPS)
- Прайграванне музыкі ў фонавым рэжыме
- Выкарыстоўвайце VOIP (голас праз IP)
Згодна з назвай (зазірнуць пад капот), я чакаў, што артыкул будзе ўтрымліваць некалькі больш шырокія тлумачэнні з тэхнічнымі дэталямі. Гэта больш падобна на перакс да артыкула. Калі гэта perex, калі будзе працяг? Ці можна вярнуць грошы? :-)
а што б вы хацелі даведацца больш падрабязна?
Ад артыкула з надпісам "пад капотам" у назве я чакаў бы падрабязнага тэхнічнага апісання (аўтар мог бы прааналізаваць, напрыклад, накладныя выдаткі пры пераключэнні прыкладанняў, або як апрацоўваецца адначасовы доступ да рэсурсаў сістэмы), параўнанне з іншымі мадэлямі (напрыклад, са ўзламаным iPhone). Ідэальна падмацаваць гэта некаторымі вымярэннямі. Я проста чакаў значна большага ад артыкула, у назве якога ёсць «пад капотам», чым ад гэтага вельмі павярхоўнага апісання.
Ці ёсць кліент icq, які працуе бесперапынна ў фонавым рэжыме, як скайп, і не разрывае злучэнне?
у прыкладання ёсць 10 секунд, каб перайсці ў рэжым прыпынення, а не 10 хвілін... і падчас гэтага працэсу некаторыя часткі могуць або не могуць "завіснуць" на бэкэнд-сэрвісах, некаторыя з якіх ужо былі пералічаны вышэй - гэта тое, што Apple называе "разумнымі" "шматзадачнасць.... потым сістэма яе збіла
Праграма можа запатрабаваць дадатковы час, калі нешта спампоўваецца, загружаецца або апрацоўваецца. Гэта не мае нічога агульнага з GPS, VoIP або прайграваннем музыкі, якія працуюць у мінімалістычным рэжыме неабмежаваны час.