|
Als software designer probeer ik bij het ontwerpen van nieuwe software zo min mogelijk aannames te doen. Soms sluipen die er toch in. Ook bij ontwerpers van besturingssystemen gebeurt dat: waarom toch steeds de aanname dat het zou moeten kunnen multitasken. Apple deed het bij het ontwerpen van het iPhoneOS anders: door multitasking juist niet te ondersteunen hebben ze een goede zet gedaan.
Iedere bezitter van een telefoon-anders-dan-iPhone (Windows Mobile, Android...) begint steeds weer over het feit dat de iPhone geen multitasking ondersteunt, en dat dat (even geciteerd uit real life discussies) 'slecht' is, want dan kun je 'geen twee dingen' tegelijk doen...
Het juiste perspectief
Eerst wil ik even benadrukken dat multitasking vanuit verschillende perspectieven bekeken kan worden. Vanuit de gebruiker ondersteunt het iPhoneOS klaarblijkelijk geen multitasking, of in ieder geval beperkt: er kan maar 1 applicatie tegelijk actief zijn (met uitzondering van bijvoorbeeld de iPod applicatie waarmee je op de achtergrond muziek kunt luisteren).
Vanuit het perspectief van het iPhoneOS zelf wordt wel multitasking ondersteund: een mail komt bijvoorbeeld gewoon binnen als de mail applicatie niet draait. Maar hier hebben we het nu niet over, het gaat over multitasking vanuit het perspectief van de gebruiker.
De voordelen van... singletasking?
Maar heeft het niet ondersteunen van multitasking eigenlijk wel voordelen? Jazeker, wel degelijk:
Door geen multitasking te ondersteunen heeft Apple het zichzelf makkelijk gemaakt en het iPhoneOS in recordtijd kunnen ontwikkelen. Geen multitasking betekent minder afhankelijkheden in je software, minder uitzonderingssituaties: geen twee applicaties die tegelijkertijd dezelfde resources willen benaderen (wat als je in een multitasking omgeving bijvoorbeeld twee GPS-applicaties draait... daar hoeft Apple geen rekening mee te houden). Simpel dus.
Geen multitasking betekent ook dat de processor (naast wat besturingssysteem taken) zich alleen maar druk hoeft te maken over die ene taak. Dit zorgt voor veel minder context-switching en context-switching is wat tijd kost bij een processor. Kortom: geen multi-tasking = een vlotter systeem.
En de iPhone, en zeker ook de iPad, is snel! Vergelijk eens hoe snel de multitouch bediening is op Windows 7, vergeleken met de iPad. Hoewel het eerste filmpje zeker niet traag werkt, zie je dat het op de iPad toch echt een stuk vlotter gaat.
Packard Bell Butterfly Touch laptop met Windows 7
iPad met iPhoneOS 3.2
Daarnaast heeft het ook nog een positieve invloed op de accu-duur. Simpelweg omdat er geen (slecht geschreven thirdparty) applicaties op de achtergrond draaien die stiekem processortijd, dus stroom, vreten.
Persistency als oplossing
Niemand kan twee dingen tegelijkertijd doen (behalve vrouwen, die kunnen praten plus een andere taak uitvoeren), ook een processor niet. Daarvoor is context-switching nodig: de processor doet een stukje van taak A, een stukje van B, stukje van C, stukje van A, etc... Achter elkaar, niet tegelijkertijd dus.
Windows-achtige omgevingen geven echter de indruk van multitasking omdat er meerdere windows tegelijkertijd open kunnen staan. Toch kun je maar in 1 window tegelijkertijd werken , namelijk het window dat de focus heeft. En ja, een programma window hoeft geen 'focus' te hebben om toch taken uit te kunnen voeren zoals bijvoorbeeld een DVD branden, maar hoe irritant is het als het window na het branden de focus weer opeist? Maar goed, dat is een andere discussie.
Omdat het scherm van de iPhone te beperkt is, is het niet nuttig om twee windows tegelijkertijd open te hebben. Daar wordt het overzicht niet beter van. Ook onder Windows Mobile gebeurt dat bijvoorbeeld niet. Maar waar Microsoft bij het wisselen van applicaties er voor heeft gekozen om de applicatie gewoon te laten draaien (wat kostbare processortijd kost), heeft Apple er voor gekozen om de vorige applicatie af te sluiten.
En dat hoeft niet slecht te zijn. Bij een goed ontworpen iPhone/iPad applicatie wordt alles waar je mee bezig was (bijvoorbeeld het invullen van wat invulvelden) weggeschreven en de volgende keer wanneer je de applicatie start wordt dit weer ingelezen. En wanneer dit snel genoeg gebeurt geeft dat voor de gebruiker hetzelfde gevoel van multitasking! Dit wordt persitency genoemd.
Waarom zou je een applicatie namelijk niet afsluiten als het naar de achtergrond verdwijnt als het toch maar een fractie van een seconde duurt om weer opnieuw op te starten?
Komt er geen multitasking dan?
Oh jawel hoor. Ik denk dat in een nieuwe versie van het OS (iOs 4.0?) zeker multitasking voor thirdparty applicaties ondersteund gaat worden, maar in wat 'beperkte' vorm. Bepaalde applicaties zoals twitter clients zullen op de achtergrond kunnen blijven draaien en de gebruiker op de hoogte stellen bij updates. Dit zal in de iOS SDK aangeboden gaan worden. Gedeeltelijk als uitgebreide functionaliteit op de push notificaties en gedeeltelijk als nieuwe functionaliteit voor het op de achtgrond afspelen of streamen van audio. Maar goed, dat is maar een voorspelling van mijn kant.
Update: Gisteren (8 april 2010) kondigde Apple multitasking aan voor iPhone OS 4.0. Leuk om mijn voorspelling hierboven naast te houden. Zie hier voor in-depth info.
Het juiste perspectief
Eerst wil ik even benadrukken dat multitasking vanuit verschillende perspectieven bekeken kan worden. Vanuit de gebruiker ondersteunt het iPhoneOS klaarblijkelijk geen multitasking, of in ieder geval beperkt: er kan maar 1 applicatie tegelijk actief zijn (met uitzondering van bijvoorbeeld de iPod applicatie waarmee je op de achtergrond muziek kunt luisteren).
Vanuit het perspectief van het iPhoneOS zelf wordt wel multitasking ondersteund: een mail komt bijvoorbeeld gewoon binnen als de mail applicatie niet draait. Maar hier hebben we het nu niet over, het gaat over multitasking vanuit het perspectief van de gebruiker.
De voordelen van... singletasking?
Maar heeft het niet ondersteunen van multitasking eigenlijk wel voordelen? Jazeker, wel degelijk:
En de iPhone, en zeker ook de iPad, is snel! Vergelijk eens hoe snel de multitouch bediening is op Windows 7, vergeleken met de iPad. Hoewel het eerste filmpje zeker niet traag werkt, zie je dat het op de iPad toch echt een stuk vlotter gaat.
Persistency als oplossing
Niemand kan twee dingen tegelijkertijd doen (behalve vrouwen, die kunnen praten plus een andere taak uitvoeren), ook een processor niet. Daarvoor is context-switching nodig: de processor doet een stukje van taak A, een stukje van B, stukje van C, stukje van A, etc... Achter elkaar, niet tegelijkertijd dus.
Windows-achtige omgevingen geven echter de indruk van multitasking omdat er meerdere windows tegelijkertijd open kunnen staan. Toch kun je maar in 1 window tegelijkertijd werken , namelijk het window dat de focus heeft. En ja, een programma window hoeft geen 'focus' te hebben om toch taken uit te kunnen voeren zoals bijvoorbeeld een DVD branden, maar hoe irritant is het als het window na het branden de focus weer opeist? Maar goed, dat is een andere discussie.
Omdat het scherm van de iPhone te beperkt is, is het niet nuttig om twee windows tegelijkertijd open te hebben. Daar wordt het overzicht niet beter van. Ook onder Windows Mobile gebeurt dat bijvoorbeeld niet. Maar waar Microsoft bij het wisselen van applicaties er voor heeft gekozen om de applicatie gewoon te laten draaien (wat kostbare processortijd kost), heeft Apple er voor gekozen om de vorige applicatie af te sluiten.
En dat hoeft niet slecht te zijn. Bij een goed ontworpen iPhone/iPad applicatie wordt alles waar je mee bezig was (bijvoorbeeld het invullen van wat invulvelden) weggeschreven en de volgende keer wanneer je de applicatie start wordt dit weer ingelezen. En wanneer dit snel genoeg gebeurt geeft dat voor de gebruiker hetzelfde gevoel van multitasking! Dit wordt persitency genoemd.
Waarom zou je een applicatie namelijk niet afsluiten als het naar de achtergrond verdwijnt als het toch maar een fractie van een seconde duurt om weer opnieuw op te starten?
Komt er geen multitasking dan?
Oh jawel hoor. Ik denk dat in een nieuwe versie van het OS (iOs 4.0?) zeker multitasking voor thirdparty applicaties ondersteund gaat worden, maar in wat 'beperkte' vorm. Bepaalde applicaties zoals twitter clients zullen op de achtergrond kunnen blijven draaien en de gebruiker op de hoogte stellen bij updates. Dit zal in de iOS SDK aangeboden gaan worden. Gedeeltelijk als uitgebreide functionaliteit op de push notificaties en gedeeltelijk als nieuwe functionaliteit voor het op de achtgrond afspelen of streamen van audio. Maar goed, dat is maar een voorspelling van mijn kant.
Update: Gisteren (8 april 2010) kondigde Apple multitasking aan voor iPhone OS 4.0. Leuk om mijn voorspelling hierboven naast te houden. Zie hier voor in-depth info.
External links ...Was this article useful to you? Please help me by using the toolbar below to tweet the article, give it an eKudo or add it to Hyves, Facebook, Delicous, Digg or another site. Thanks!
Comments on this article
There is 1 commentsAdd comment
Adding a comment is simple and registration is not needed!Your IP address is logged, but will not published, all comments need E-mail confirmation and are moderated one by one. Abuse is not tolerated. It is not possible to edit your comment afterwards.



External links




Echter zouden ze moeten zeggen dat ze 'snel tussen programma's' willen switchen. Multi-tasking is in het iPhone OS gewoon anders geimplementeerd dan men gewend is...