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.
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?