Všetci určite poznáme poučku „multitasking = schopnosť vykonávať viac procesov súčasne“. Používame ho v našich počítačoch bez toho, aby sme si jeho prítomnosť nejako zvlášť uvedomovali. Prepínanie medzi aplikáciami či oknami jednej aplikácie prebieha (pre nás) v reálnom čase a berieme túto schopnosť operačného systému ako samozrejmosť.
Task different
Operačný systém prideľuje v malých časových intervaloch procesor všetkým aplikáciám. Tieto časové úseky sú natoľko malé, že ich nedokážeme postrehnúť, pripadá nám teda, akoby všetky aplikácie využívali procesor súčasne. Mohli by sme si myslieť, že multitasking v iOS 4 funguje úplne rovnako. Nie je tomu tak. Hlavným dôvodom je samozrejme kapacita batérie. Pokiaľ by všetky aplikácie zostali skutočne bežať na pozadí, museli by sme zrejme za pár hodín hľadať zásuvku.
Väčšina aplikácií kompatibilných s iOS 4, je po stlačení Home tlačidla uvedená do „suspended mode“ alebo ak uspaná. Ako prirovnanie môže poslúžiť zatvorenie veka notebooku, ktorý sa okamžite prepne do režimu spánku. Po otvorení veka sa notebook prebudí a všetko je presne v rovnakom stave ako pred zatvorením veka. Ďalej existujú aplikácie, pri ktorých stlačenie Home tlačidla spôsobí ich ukončenie. A tým je myslené skutočné ukončenie. Vývojári majú na výber, ktorý z týchto spôsobov použijú.
Existuje však ešte jedna kategória aplikácií. To sú práve tie aplikácie, ktoré naozaj bežia na pozadí, hoci na vašom iZariadení robíte úplne niečo iné. Dobrým príkladom buď Skype, pretože potrebuje neustále pripojenie k internetu. Ďalším príkladmi môžu byť aplikácie prehrávajúce hudbu na pozadí (Pandora) alebo aplikácie vyžadujúce stále použitie GPS. Áno, tieto aplikácie žmýkajú batériu, aj keď beží na pozadí.
Uspať alebo zostreliť?
Isté aplikácie kompatibilné s iOS 4, ktoré by mali po stlačení Home tlačidla byť uspané (uvedené do „suspended mode“), bežia ďalej na pozadí. Apple dal vývojárom presne desať minút na to, aby daná aplikácia dokončila svoju úlohu, nech už je to čokoľvek. Dajme tomu, že sťahujete súbor v aplikácii GoodReader. Zrazu sa vám chce niekto dovolať a vy onen dôležitý hovor musíte jednoducho prijať. Hovor sa nepretiahol nad desať minút, vy sa vrátite do aplikácie GoodReader. Súbor už môže byť stiahnutý alebo sa stále sťahuje. Čo ak bude hovor trvať dlhšie ako desať minút? Aplikácia, v našom prípade GoodReader, bude musieť zastaviť svoju činnosť a povedať iOS, že môže byť uspaná. Pokiaľ tak neurobí, bude samotným iOS bez milosti ukončená.
Teraz viete, v čom sa líšia „mobilný“ a „desktopový“ multitasking. Zatiaľ čo pri počítači je dôležitá plynulosť a rýchlosť prepínania sa medzi aplikáciami, pri mobilných zariadeniach je stále najdôležitejšia výdrž batérie. Tomuto faktu musel byť prispôsobený aj multitasking. Preto až po prečítaní tohto článku stlačíte dvakrát Home tlačidlo, už neuvidíte „lištu aplikácií bežiacich na pozadí“, ale vo svojej podstate len „zoznam posledných použitých aplikácií“.
Autor: Daniel HruškaZdroj: onemoretap.com
hmm, zaujimave :) ja si vždy myslel, že je to vždy podobne ako to ide urobiť na unixe. Že sa tej aplikácii pridelí nulový cpu čas a ten proces jednoducho stojí v pamäti, má porad naalokované všetky zdroje. takže som mal nutkanie porad dvakrát mačkať domov a aplikácie hneď zatvárať, aby som zotril. Takže to znamená, že aj keď je v tej dolnej skryte liste ikona aplikácie, je napriek tomu už dávno (po 10 minútach) tá app ukončená?
V dolnom liste sú jednoducho naposledy otvorené aplikácie, pričom niektoré z nich ešte môžu bežať, niektoré sú suspendované, a niektoré sú ukončené úplne. Ručné odstránenie aplikácie z listov na ten „vedľajší efekt“, že pokiaľ náhodou bezie (alebo je suspendovaná) bude ukončená.
O tých 10 minút navyše si aplikácia musí sama povedať, a nie je zaručené že ich dostane.
Tak to si ma te obsese ukoncovať aplikácie z listy nezbavil (čo keď nahodo rie resources, ze? :-D)
Pochopil som to tak, že tých 10 minút sa týka aplikácií, ktoré potrebujú pracovať na pozadí a nespadajú do kategórie „skype, GPS a prehrávanie hudby“. Ostatné aplikácie sa prepnú do suspended módu av pamäti držia tak dlho, pokiaľ tá pamäť nie je potrebná pre iné veci.
Suspended mód má tú výhodu, že pokiaľ je potom potrebné app killnout, neprídete o jej dáta, všetko sa v okamihu prepnutia do suspended uloží.
alebo v prípade napr. prehravaca ekvivalent príkazu bg / fg
A ako je to teda v prípade prehrávača, alebo iných aplikácií, bežiacich na pozadí ľubovoľne dlhú dobu? Myslím tým, či si ako autor môžem „vybrať“, alebo toto musí nejakým spôsobom Apple schváliť?
Aby aplikácia mohla naozaj bezpieť na pozadí neeobmedzene dlho musí robiť (zaregistrovať) jednu z nasledujúcich akcií:
– Pouzivat Location services (GPS)
– Prehrávať hudbu na pozadí
– Pouzivat VOIP (Voice over IP)
Podľa titulku (pohľad pod kapotu) som čakal, že článok bude obsahovať trochu obsiahlejší výklad s technickými detailmi. Toto vyzerá skôr len ako perex k článku. Pokiaľ je to perex, tak kedy bude pokračovanie? Môžete si nechať vrátiť peniaze? :-)
a čo by ste chceli viesť podrobnejšieho?
Od článku, ktorý nesie v titulku „pod pokrievkou“ by som očakával detailný technický popis (autor mohol rozobrať napríklad réžiu pri prepínaní aplikácií, alebo ako je riešený súbežný prístup k systémovým zdrojom), porovnanie s inými modelmi (napríklad pri iPhone s jailbreakom). Ideálne potom podložiť aj nejakým meraním. Jednoducho od článku, ktorý má v titulku „pod pokrievkou“ som čakal oveľa viac, než tento veľmi povrchný popis.
Existuje nejaký icq klient, ktorý bez sústavne na pozadí ako skype a nepreruší sa spojenie?
aplikácia má na prechod do suspend módu 10 sekúnd, nie 10 minút… pričom počas tohto procesu môže alebo nemusí niektoré svoje časti „povesiť“ na backendove služby z ktorých časť už bola vyššie vymenovaná – to je to čomu Apple hovorí „chytrý“ multitasking…. potom ju systém zostreli
Aplikácia si môže vyžiadať ďalší čas, ak sa niečo sťahuje, uploaduje alebo niečo spracováva. Vobec to nesuvisi s GPS, VoIP alebo prehravanim hudby, ktore bezia v minimalistickom rezime a to neobmedzene dlho.