iPhone podporuje multitasking
Nebo je multitasking trošku (nebo úplně) něco jiného, než jak ho znám a co si pod tím představuji. S příchodem WMS7 (smál jsem se asi půl hodiny v kuse při čtení prvních dojmů, a to proti jiným mobilům nic nemám, jen mi nevyhovují, ale rád si přečtu nějaký flame mezi iPhone, WM, Android a jinou komunitou), již nějaký pátek fungujícím Nexus One a očekávaným iPhone OS 4, často se tu tohle magické slovíčko předhazuje, lidé si nadávají, osočují se, kritizují a jsou schopni se málem porvat.
Autorem tohoto příspěvku je Štěpán Ryšavý – oMicrone.net, jehož příspěvky můžete najít na blogu aj:gou.
Tak jsem přemýšlel, co je vlastně multitasking, a zda ho ten můj zázrak fakt nepodporuje. A včera, čistě náhodou, při absolutně normální činnosti, jsem si uvědomil, že vlastně ano, a to dokonce velmi vyspělým způsobem. Aktéry triviálního důkazu multitaskingu na iPhone jsou:
- já (alias “uživatel”, “já”),
- iPhone (3G 8GB OS v 3.1.3, u Vodafone s paušálem + daty, bez JB, s běžným nastavením, nic extra, alias “iPhone”),
- sada aplikací (iPod, Email, Safari, AppStore, Billings Touch, Wow Armory, Twitterrific a SMS, a možná i jiné),
- úvodní obrazovka po odemčení (alias “home”).
Začínáme. iPod hraje. Pomocí Safari pročítám zprávy o bronzu Bauera (gratulace !!!). Od MaruMaru mi přijde sms s gratulací, zobrazí se jako push. Kliknu na ní, protože si nepamatuju, k čemu gratuluje, přecházím do SMS, a zjišťuji, že to je k 1000. fanouškovi stránek na Facebooku o Českém ráji. Vracím se zpět home a druhým kliknutím do Safari, hned přímo do článku o Bauerovi. Dočetl jsem, jdu na home a jdu se podívat, jak se daří kamarádům v guildě a spouštím Wow Armory. To přechází hned na moji poslední stránku zde, což je výpis guildy. Do toho mi tlumeně iPhone oznámí nový email. Přecházím na home a do Emailu. Přišla reakce na příspěvky na SuperApple.cz ohledně JB iPhonů. Email mi označuje sám odkazy, přes něj se vracím do Safari, kde se mi hned otevírá nová stránka …
… asi v tento okamžik mi to nějak cvaklo …
… jdu ze Safari na home a pouštím Billings (aplikace pro trackování doby na projektu, vystavování faktur klientům, atd atd, o ní třeba jindy) a zde zakládám nový úkol a spouštím na něm měření času. Vypínám Billings, jsem na home. U Billings svítí ikonka jednoho aktivního měření. Jdu na AppStore, hledání aplikace, a beru první free aplikaci. Z AppStore mě to hodí na home, kde se zobrazí, jak se aplikace stahuje. Chvilku to potrvá, ale nečekám a jdu na Twitterrific pro poslední novinky. Pročítám zprávy a zaujme mě odkaz na WMS7. Klikám na něj a přecházím do zpravodajství. Pomocí zatřesení iPhonem přeskakuji na jinou skladbu (nechtělo se mi jít na iPod aplikaci). Dočítám aktualitu a jdu na home. Aplikace se mezitím začala instalovat. Říkám si super, mezitím přišel další mail. Při čtení mailu se ozval tlumený zvuk informující o nainstalování aplikace. Jdu na home, abych si přemístil ikonku. Vracím se do mailu, dočítám. Jdu na home, otevírám Billings a vypínám časování projektu. Pomocí zvláštní kombinace (ale je nejrychlejší: lock, home, home –> vyskočí na obrazovce před odemčením ovládání iPodu) vypínám iPod. Konec testu.
(ps: dnes ráno jsem se podíval do mailu a hned se mi zobrazila moje poslední zpráva, stejně tak v billings jsem mohl hned pokračovat v časování).
Neříkejte mi, že iPhone neumí multitasking. Mimochodem, nevidím rozdíl mezi kliknutím na ikonu a vybráním jiné aplikace, nebo stisknutím TAB a kliknutím na aplikaci, nebo použitím Expose a kliknutím na aplikaci, nebo kliknutím na Home u iPhone a vybráním aplikace, když se stane totéž. Dostanu se tam, kde jsem byl. Aplikace získá focus, případně proběhne její init(), dle druhu a obtížnosti aplikace v délce do 2 sekund (vzhledem k procesoru super) včetně načtení posledního stavu (pokud to podporuje). Pokud to aplikace umí, zachovává běžící thread na pozadí (viz instalace, iPod, Safari, ale i aplikace třetí strany, Billings).
Takže chyba není na straně OS, ale na straně programátorů, kteří nedokáží aplikace nastavit a využít tak schopnosti běžet na pozadí. Nebo mají snad Billings výsadní právo a odhalily tajnou cestu do jádra pudla?
Programátorsky máš pravdu, tak už jsme to i zde probrali .. ale v tomto je důležité vnímání většiny, která prostě ta střeva nevidí (ani nechtějí, a zejména nepotřebují) .. v jejich pohledu je vše v pořádku, podporuje to jejich, uživatelský multitasking ..
Teoretická otázka je, zda moderní systémy podporující multitasking nevyužívají zbytečně této možnosti, kdy často běží timery, enterFrame eventy (zejména flash, flex), a jim podobné metody, místo aby využily právě tuhle jednoduchou schopnost (pokud to OS neudělá nebo nevynutí za ně) ..
Programátorsky máš pravdu, tak už jsme to i zde probrali .. ale v tomto je důležité vnímání většiny, která prostě ta střeva nevidí (ani nechtějí, a zejména nepotřebují) .. v jejich pohledu je vše v pořádku, podporuje to jejich, uživatelský multitasking ..
Teoretická otázka je, zda moderní systémy podporující multitasking nevyužívají zbytečně této možnosti, kdy často běží timery, enterFrame eventy (zejména flash, flex), a jim podobné metody, místo aby využily právě tuhle jednoduchou schopnost (pokud to OS neudělá nebo nevynutí za ně) ..
Ja jen ve zkratce, vse co se tu pise je pravda a je pravda i to za to umeli i staricke Palmy, jak tu nekdo zminoval a uzivatele byli maximalne spokojeni.
V souvislosti s multitaskem na iPhonech me napadaji 3 veci:
1, zminovany GPS logger, mozna to vybije baterku za 4 hodky, ale pokud si to uzivatel nemuze ani vyzkouset, tak stejne neuveri.
2, byt stale online na Facebooku, gTalku, ICQ, Jabberu, Skypu a push notifikace mi neprijdou dostacujici.
3, a jak uz jste zminovali tak FM streaming.
Nic vic uz me asi nenapada, vse ostatni jde opravdu vyresit jen uspanim aplikace.
Jinak si myslim, ze Safari by si mohlo trosku vic pamatovat stranky, treba pri kroku zpet.
Ja jen ve zkratce, vse co se tu pise je pravda a je pravda i to za to umeli i staricke Palmy, jak tu nekdo zminoval a uzivatele byli maximalne spokojeni.
V souvislosti s multitaskem na iPhonech me napadaji 3 veci:
1, zminovany GPS logger, mozna to vybije baterku za 4 hodky, ale pokud si to uzivatel nemuze ani vyzkouset, tak stejne neuveri.
2, byt stale online na Facebooku, gTalku, ICQ, Jabberu, Skypu a push notifikace mi neprijdou dostacujici.
3, a jak uz jste zminovali tak FM streaming.
Nic vic uz me asi nenapada, vse ostatni jde opravdu vyresit jen uspanim aplikace.
Jinak si myslim, ze Safari by si mohlo trosku vic pamatovat stranky, treba pri kroku zpet.
Napadá mě jeden zajímavý argument, proč tu není „programátorský“ multitasking pro aplikace třetích stran .. pokud tlačítko (jediné na iPhonu) funguje jako návrat na home včetně volání ukončovacích skriptů, tak pokud by zde byl multitasking, tak jak by se rozlišilo, kdy chcete vypnout a kdy jit jen na pozadí (a přitom zůstat user friendly and simple, jako je to dodnes) ..
Napadá mě jeden zajímavý argument, proč tu není „programátorský“ multitasking pro aplikace třetích stran .. pokud tlačítko (jediné na iPhonu) funguje jako návrat na home včetně volání ukončovacích skriptů, tak pokud by zde byl multitasking, tak jak by se rozlišilo, kdy chcete vypnout a kdy jit jen na pozadí (a přitom zůstat user friendly and simple, jako je to dodnes) ..
Zkuste vypnout Billings a pak změnit čas v iphonu. Udělat měření času tak,a by to vypadalo, že aplikace běžela na pozadí, asi nebude takový problém, když aplikace při svém novém startu ví, v jaký čas měření započalo. To, že něco uživateli připadá jako multitasking ještě neznamená, že ta aplikace na pozadí skutečně běží, jak se autor naivně domnívá.
Autor také několikrát vyzval, aby se lidé zamysleli nad multitaskem z pohledu uživatele a ne programátora (aneb koho je víc a o koho jde především?) ..
Jinak pokud tohle uděláte (váš příklad) na libovolném systému, udělá to paseku (např. getTime() bude jak v Ajaxu, Flashi, i normálních aplikacích ukazovat chybu, protože výpočet také vychází ze systému getActualTime() – getTimeAtStart()) .. málo trackovacích programů jde stylem přírůstku dle cyklů procesoru bez ohledu na čas ..
p.s.: kolik uživatelů mění čas za běhu trackování? To je jako měnit motor ve 130km/h na dálnici ..
Autor také několikrát vyzval, aby se lidé zamysleli nad multitaskem z pohledu uživatele a ne programátora (aneb koho je víc a o koho jde především?) ..
Jinak pokud tohle uděláte (váš příklad) na libovolném systému, udělá to paseku (např. getTime() bude jak v Ajaxu, Flashi, i normálních aplikacích ukazovat chybu, protože výpočet také vychází ze systému getActualTime() – getTimeAtStart()) .. málo trackovacích programů jde stylem přírůstku dle cyklů procesoru bez ohledu na čas ..
p.s.: kolik uživatelů mění čas za běhu trackování? To je jako měnit motor ve 130km/h na dálnici ..
Ještě dodatek, každé nové sledování v Billings v okamžiku ukončení se uloží přírustkem k projektu a úkolu, a další sledování jde opět od nuly.
Ještě dodatek, každé nové sledování v Billings v okamžiku ukončení se uloží přírustkem k projektu a úkolu, a další sledování jde opět od nuly.
to oMicrone: multitasking to neobsahuje a ani kdyz zacneme rikat, ze ano, to na veci nic nezmeni. tecka. pokud mate aplikaci, ktera by potrebovala pro svou funkci neustaly beh, tak je jedina moznost ji nechat celou dobu na popredi a nepouzivat jinou. zadna jina moznost neni. treba ukladani trasy pompci gps, prehravani internetoveho radia, nebo cokoliv jine. ano, u nekterych funkci je mozne obejit absenci multitaskingu push notifikaci, ale to je porad jen obchazeni absence te funkce ne jeji doplneni.
Ve svem predchazejicim prispevku jsem reagoval na autrovo tvrzeni o nejakem tajemnem threadu na pozadi i u apliakcich treti stran. a ta poznamka ke zmene casu bylo nakopnuti aby si uvedomil, jak to jde udelat aby to vypadalo, ze mereni bezelo na pozadi. To snad nemuze byt problem pochopit.
Trochu mi to pripomina radka hulana, ktery nas vem blogu zacal pouzivat termin dlazdicovy multitasking, kdyz se ukazalao, ze by WM7 nemusi multitasking mit (byt asi nakonec regulerni multitasking bude)
Prosím, zkus se zamyslet jen z toho uživatelského .. ano, některé funkce tak nepůjdou (ani uživatelským vnímáním), pokud nebudou oficiální app od Apple, které mají MT povolený .. app třetích stran nebudou mít MT tak, jak mu rozumí IT .. ale přesto jako uživatel můžeš reakce a styl používání označit za MT ..
Tvé argumenty chápu, máš v nich pravdu .. jen jak jsem na začátku článku řekl, možná vidím MT jinak než mnoho odborníků na IT, Macy, PC a MT konkrétně .. ale jako uživatel .. možná jako tzv. „lama“, která by měla mít zakázaný přístup k čemukoli, co spočítá 365+638 rychleji než já .. ale mám pocit, že tohle je vnímání většiny lidí, jak si MT představují, že prostě nepřijdou o data a práci a aktuální stav, když aplikaci ukončí (třeba triviálním přeskočením z mailu do browseru (což mimochodem není ani vizuálně přes home screen a dojem to umocňuje, takže user ani neví, že došlo k ukončení)) .. a je jim jedno, zda to je thread (ano, v tom mi byl názor logicky vyvrácen), nebo zda si app pomůže uložením mezistavu ..
ps: neuznávám použití „Radka Hulána“ jako argumentu na cokoli .. :)
Prosím, zkus se zamyslet jen z toho uživatelského .. ano, některé funkce tak nepůjdou (ani uživatelským vnímáním), pokud nebudou oficiální app od Apple, které mají MT povolený .. app třetích stran nebudou mít MT tak, jak mu rozumí IT .. ale přesto jako uživatel můžeš reakce a styl používání označit za MT ..
Tvé argumenty chápu, máš v nich pravdu .. jen jak jsem na začátku článku řekl, možná vidím MT jinak než mnoho odborníků na IT, Macy, PC a MT konkrétně .. ale jako uživatel .. možná jako tzv. „lama“, která by měla mít zakázaný přístup k čemukoli, co spočítá 365+638 rychleji než já .. ale mám pocit, že tohle je vnímání většiny lidí, jak si MT představují, že prostě nepřijdou o data a práci a aktuální stav, když aplikaci ukončí (třeba triviálním přeskočením z mailu do browseru (což mimochodem není ani vizuálně přes home screen a dojem to umocňuje, takže user ani neví, že došlo k ukončení)) .. a je jim jedno, zda to je thread (ano, v tom mi byl názor logicky vyvrácen), nebo zda si app pomůže uložením mezistavu ..
ps: neuznávám použití „Radka Hulána“ jako argumentu na cokoli .. :)
Problem mam s tim, ze ani jako uzivatel to nevnimam jako multitasking. Kdyz aplikace nemuze vykonavat cinnost na pozadi, tak to nemuzu povazovat za multitasking. Projel jsem si aplikace v iphonu (mam 11 obrazovek) a v naproste vetsine bud prijdu o posledni stav nebo nedelaji na pozadi to, k cemu jsou urceny. Vyjimkou jsou aplikace, ktere neco zobrazuji a i tam vetsinou pri opakovename startu skoci na uvodni obrazovku. Tudiz to neni ani multitasking na oko.
ps: připouštím, že použití RH je podobné jako použití hitlera, ale tady se nešlo vyhnout :)
Ono je to trochu jako brát léky, necítit díky tomu příznaky nemoci a tvrdit tedy, že nejsem nemocen. Chápu, že „objev“ běhu aplikace billing na pozadí vypadal lákavě.
btw: ovládání ipodu umí vyskočit v podobě ovládacího okna nad běžící aplikaci (dvojklikem na home) i bez použití lock.
ps: ano použití RH je jako použití hitlera, ale v tom případě se nešlo vyhnout :)
Ono je to trochu jako brát léky, necítit díky tomu příznaky nemoci a tvrdit tedy, že nejsem nemocen. Chápu, že „objev“ běhu aplikace billing na pozadí vypadal lákavě.
btw: ovládání ipodu umí vyskočit v podobě ovládacího okna nad běžící aplikaci (dvojklikem na home) i bez použití lock.
ps: ano použití RH je jako použití hitlera, ale v tom případě se nešlo vyhnout :)
Billings byly jen jednou z aplikací (většina apps byla made by Apple), ale svoji schopnost simulace MT dotáhly poměrně daleko. Určitě by bylo i dost aplikací nejen z tvých 11 obrazovek, které by při takovém stylu naprosto vyhovovaly potřebám lidí. Určitě je dost aplikací, které potřebují plnohodnotný multitask, jinak jsou poloviční.
Uvidíme, co přinese iPhone OS 4, podle všeho stačí jen „přepnout“ jeden trigger, který povolí i apps třetích stran využít multitask, který je zatím jen vyhrazený iPhone nativním aplikacím. A možná zůstanou u tohoto modelu (který možná bude následovat i WMS7), kdy ostatní aplikace budou moct jen simulovat multitask a důraz bude kladen na co nejrychlejší odezvu a výkon aktuální aplikace. Tedy zda dají přednost uživatelskému nebo strojovému multitasku (obojí má své plusy i mínusy).
btw: dvouklik na home u iPodu mi funguje jen občas .. kdežto v kombinaci s lockscreen spolehlivě ..
Billings byly jen jednou z aplikací (většina apps byla made by Apple), ale svoji schopnost simulace MT dotáhly poměrně daleko. Určitě by bylo i dost aplikací nejen z tvých 11 obrazovek, které by při takovém stylu naprosto vyhovovaly potřebám lidí. Určitě je dost aplikací, které potřebují plnohodnotný multitask, jinak jsou poloviční.
Uvidíme, co přinese iPhone OS 4, podle všeho stačí jen „přepnout“ jeden trigger, který povolí i apps třetích stran využít multitask, který je zatím jen vyhrazený iPhone nativním aplikacím. A možná zůstanou u tohoto modelu (který možná bude následovat i WMS7), kdy ostatní aplikace budou moct jen simulovat multitask a důraz bude kladen na co nejrychlejší odezvu a výkon aktuální aplikace. Tedy zda dají přednost uživatelskému nebo strojovému multitasku (obojí má své plusy i mínusy).
btw: dvouklik na home u iPodu mi funguje jen občas .. kdežto v kombinaci s lockscreen spolehlivě ..