Všichni jistě známe poučku „multitasking = schopnost provádět více procesů současně“. Používáme jej v našich počítačích, aniž bychom si jeho přítomnost nějak zvlášť uvědomovali. Přepínání mezi aplikacemi či okny jedné aplikace probíhá (pro nás) v reálném čase a bereme tuto schopnost operačního systému jako samozřejmost.
Task different
Operační systém přiděluje v malých časových intervalech procesor všem aplikacím. Tyto časové úseky jsou natolik malé, že je nedokážeme postřehnout, připadá nám tedy, jakoby všechny aplikace využívaly procesor současně. Mohli bychom si myslet, že multitasking v iOS 4 funguje úplně stejně. Není tomu tak. Hlavním důvodem je samozřejmě kapacita baterie. Pokud by všechny aplikace zůstaly skutečně běžet na pozadí, museli bychom zřejmě za pár hodin hledat zásuvku.
Většina aplikací kompatibilních s iOS 4, je po stisku Home tlačítka uvedena do „suspended mode“ nebo-li uspána. Jako přirovnání může posloužit zavření víka notebooku, který se okamžitě přepne do režimu spánku. Po otevření víka se notebook probudí a vše je přesně ve stejném stavu jako před zavřením víka. Dále existují aplikace, u nichž stisk Home tlačítka způsobí jejich ukončení. A tím je myšleno opravdové ukončení. Vývojáři mají na výběr, který z těchto způsobů použijí.
Ovšem existuje ještě jedna kategorie aplikací. To jsou právě ty aplikace, které opravdu běží na pozadí, přestože na vašem iZařízení děláte úplně něco jiného. Dobrým příkladem budiž Skype, protože potřebuje neustálé připojení k internetu. Dalším příklady mohou být aplikace přehrávající hudbu na pozadí (Pandora) nebo aplikace vyžadující stálé použití GPS. Ano, tyto aplikace ždímají baterii, i když běží na pozadí.
Uspat nebo sestřelit?
Jisté aplikace kompatibilní s iOS 4, které by měly po stisku Home tlačítka být uspány (uvedeny do „suspended mode“), běží dále na pozadí. Apple dal vývojářům přesně deset minut na to, aby daná aplikace dokončila svou úlohu, ať už je to cokoli. Dejme tomu, že stahujete soubor v aplikaci GoodReader. Najednou se vám chce někdo dovolat a vy onen důležitý hovor musíte prostě přijmout. Hovor se neprotáhl nad deset minut, vy se vrátíte do aplikace GoodReader. Soubor už může být stažen či se stále stahuje. Co když bude hovor trvat déle než deset minut? Aplikace, v našem případě GoodReader, bude muset zastavit svoji činnost a říct iOS, že může být uspána. Pokud tak neučiní, bude samotným iOS bez milosti ukončena.
Nyní víte, v čem se liší „mobilní“ a „desktopový“ multitasking. Zatímco u počítače je důležitá plynulost a rychlost přepínání se mezi aplikacemi, u mobilních zařízení je stálé nejdůležitější výdrž baterie. Tomuto faktu musel být přizpůsoben i multitasking. Proto až po přečtení tohoto článku stisknete dvakrát Home tlačítko, již neuvidíte „lištu aplikací běžících na pozadí“, ale ve své podstatě jen „seznam posledních použitých aplikací“.
Autor: Daniel HruškaZdroj: onemoretap.com
hmm, zajimave :) ja si vzdycky myslel, ze je to vzdy podobne jak to jde udelat na unixu. Ze se te aplikaci prideli nulovy cpu cas a ten proces proste stoji v pameti, ma porad naalokovany vsechny zdroje. takze jsem mel nutkani porad dvakrat mackat home a apliakace hned zavirat, abych setril. Takze to znamena, ze i kdyz je v te dolni skryte liste ikona aplikace, je presto uz davno (po 10minutach) ta app ukoncena?
V dolni liste jsou proste naposledy otevrene aplikace, pricemz nektere z nich jeste muzou bezet, nektere jsou suspendovane, a nektere jsou ukonceny uplne. Rucni odstraneni aplikace z listy na ten „vedlejsi efekt“, ze pokud nahodou bezi (nebo je suspendovana) bude ukoncena.
O tech 10 minut navic si aplikace musi sama rict, a neni zarucene ze je dostane.
Tak to si me te obsese ukoncovat aplikace z listy nezbavil (co kdyz nahodo zere resources, ze? :-D)
Pochopil jsem to tak, že těch 10 minut se týká aplikací, které potřebují pracovat na pozadí a nespadají do kategorie „skype, GPS a přehrávání hudby“. Ostatní aplikace se přepnou do suspended módu a v paměti drží tak dlouho, dokud ta paměť není potřeba pro jiné věci.
Suspended mód má tu výhodu, že pokud je pak potřeba app killnout, nepřijdete o její data, vše se v okamžiku přepnutí do suspended uloží.
a nebo v pripade napr prehravace ekvivalent prikazu bg / fg
A jak je to tedy v případě přehrávače, nebo jiných aplikací, běžících na pozadí libovolně dlouhou dobu? Myslím tím, zda si jako vývojář mohu „vybrat“, nebo tohle musí nějakým způsobem Apple schválit?
Aby aplikace mohla opravdu bezet na pozadi neeomezene dlouho musi delat (zaregistrovat) jednu z nasledujicich akci:
– Pouzivat Location services (GPS)
– Prehravat hudbu na pozadi
– Pouzivat VOIP (Voice over IP)
Podle titulku (pohled pod kapotu) jsem čekal, že článek bude obsahovat poněkud obsáhlejší výklad s technickými detaily. Tohle vypadá spíše jen jako perex k článku. Pokud je to perex, tak kdy bude pokračování? Můžete si nechat vrátit peníze? :-)
a co byste chtel vedet podrobnejsiho?
Od článku, který nese v titulku „pod pokličkou“ bych očekával detailní technický popis (autor mohl rozebrat třeba režii při přepínání aplikací, nebo jak je řešený souběžný přístup k systémovým zdrojům), porovnání s jinými modely (třeba u iPhonu s jailbreakem). Ideálně pak podložit i nějakým měřením. Prostě od článku, který má v titulku „pod pokličkou“ jsem čekal mnohem víc, než tento velmi povrchní popis.
Existuje nejaky icq klient, ktery bezi soustavne na pozadi jako skype a neprerusi se spojeni?
aplikace ma na prechod do suspend modu 10 sekund, nikoliv 10 minut… pricemz behem tohoto procesu muze nebo nemusi nektere sve casti „povesit“ na backendove sluzby z nichz cast uz byla vyse vyjmenovana – to je to cemu Apple rika „chytry“ multitasking…. pote ji system sestreli
Aplikacia si moze vyziadat dalsi cas, ak sa nieco stahuje, uploaduje alebo nieco spracuvava. Vobec to nesuvisi s GPS, VoIP alebo prehravanim hudby, ktore bezia v minimalistickom rezime a to neobmedzene dlho.