Skip to content

Multitasking und der Ressourcenverbrauch

In den vergangenen Wochen seit der Veröffentlichung von iOS 4 haben mich verschiedene Mail-Zuschriften erreicht, die sich um das neue Multitasking-Feature der aktuellen iOS-Version drehen. Ein paar Einstiege in das Thema liefert mein bereits vor einigen Wochen verfasster Artikel. Mit steigender Verfügbarkeit von Multitasking-Apps und der ebenso steigenden Nutzung der sieben von Apple zur Verfügung gestellten APIs mehren sich aber auch die Fragen, die sich in erster Linie auf die durch das Multitasking verbrauchten Ressourcen des iPhone beziehen. In letzter Zeit wird vor allem über schnell schwindende Akkukapazitäten berichtet, die angeblich durch das Multitasking hervorgerufen werden sollen. Zeit also, einmal einen Blick auf die tatsächlichen Auswirkungen zu werfen und auch darauf, wie und wann Apps im Hintergrund laufen, wie man sie nutzt und wie man die Verwendung von Hardware-Ressourcen verhindert. (mit Dank an Carsten für die Anregung!)

Fast-App Switching

Dies ist die Multitasking-Option, die zum Beispiel auch meine App nutzt und die demnächst wohl auf einen Großteil der Apps zutreffen wird. Beim Fast-App Switching wird die App beim Druck auf den Homebutton nicht mehr komplett beendet, sondern quasi im Hintergrund "eingefroren" und verbraucht in diesem Zustand weder Akku noch sonstige Ressourcen. Lediglich Arbeitsspeicher wird dabei belegt. Für den User ergibt sich dadurch der Vorteil, dass er nach dem Beenden der App (eigentlich wird sie nur noch in den Hintergrund verschoben) und nach einer späteren Rückkehr sofort wieder an der Stelle landet, wo er sie verlassen hat. Die Entwickler müssen hierfür keine besonderen Maßnahmen ergreifen. Die jeweiligen Apps müssen lediglich mithilfe des iPhone SDK (ja das heißt immer noch so) erstellt worden sein.

Background Location

Hierbei handelt es sich um die Multitasking-Option, die vor allem von Navi-Apps wie Navigon oder TomTom genutzt wird. Zu beachten ist dabei, dass diese Apps sowohl Background Location, als auch Fast-App Switching nutzen. Im Gegensatz zu Fast-App Switching wird bei Background Location sehr wohl Ressourcen verbraucht. Und das nicht zu knapp. Um zu verhindern, dass dies ungewollt geschieht, erscheint seit iOS 4 oben rechts in der Statusleiste auf dem iPhone-Display ein kleiner Pfeil, der Richtung Nordost zeigt. Ist dieser zu sehen, weiß man, dass im Hintergrund (und natürlich auch im Vordergrund) noch eine App läuft, die Location Services nutzt. Das passiert unter anderem bei den Navi-Apps wenn gerade aktiv eine Navigation läuft und man auf den Homebutton drückt. Somit werden auch noch Richtungsanweisungen gegeben, selbst wenn man zwischenzeitlich eine andere App öffnet. Beendet man stattdessen die laufende Navigation bevor man auf den Homebutton drückt, werden auch die Location Services beendet. Damit laufen sie auch im Hintergrund nicht mehr weiter und verbrauchen somit auch keine Ressourcen.

Background Audio

Background Audio wird in Zukunft von vielen Audio-Apps, wie z.B. Internet-Radios genutzt werden. Dabei spielt die App auch weiterhin Musik oder sonstige Audio-Inhalte ab, selbst wenn sie gar nicht mehr im Vordergrund aktiv ist und man andere Apps nutzt. Hierbei ist es relativ einfach zu erfahren, ob die App gerade Ressourcen verbraucht. Während die Musik aus dem Hintergrund gespielt wird, werden natürlich auch Ressourcen verbraucht. Teilweise zeigen die Apps in der Statusleiste dann auch den von der iPod-App bekannten Play-Button. Ist die Musik aus, befindet sich die App im selben Status wie beim Fast-App Switching, ist also so lange im Hintergrund eingefroren, bis man sie wieder in den Vordergrund holt.

VoIP

Apples bisheriger Ansatz um Multitasking zu umgehen, waren die sogenannten Push Notifications. Diese wurden unter anderem auch für VoIP-Apps wie Skype oder Fring verwendet. Mit der Multitasking-Option VoIP verhalten sich diese Apps nun wie bei einem ganz normalen Telefonanruf. Befindet man sich aktuell in einer App, wird man per Pop-Up darüber informiert, dass ein Anruf eingeht. Dabei hat man dann die Möglichkeit, den Anruf entgegenzunehmen, oder ihn zu ignorieren. Details zur Arbeitsweise hat Apple hier leider nicht bekannt gegeben. Verschiebt man die App in den Hintergrund, bleibt man trotzdem in dem jeweils genutzten Dienst online. Allerdings wird es sich nicht vermeiden lassen, dass die App von Zeit zu Zeit eine Onlineverbindung mit dem zugehörigen Server aufbaut, um den Status zu überprüfen. Dies ist unter anderem deswegen notwendig, weil das iOS eigenmächtig Hintergrund-Apps beenden kann, wenn der Arbeitsspeicher knapp wird. Von daher wird eine VoIP-App im Hintergrund zwangsweise ein gewisses Maß an Ressourcen verbrauchen.

Task Completion

Diese Multitasking-Option erlaubt es Apps, auch im Hintergrund bestimmte Aufgaben zu beenden, auch wenn die App nicht mehr im Vordergrund aktiv ist. Ein Beispiel hierfür wäre der Foto-Upload auf Flickr. Hat man mit einer früheren iOS-Version einen Foto-Upload angeschoben und die App anschließend beendet, wurde auch der Upload abgebrochen. In iOS 4 können solche Aufgaben nun im Hintergrund beendet werden. Nun könnte man meinen, dass dies der Akku-Killer schlechthin sein könnte, da eine solche Aufgabe im schlechtesten Fall mehrere Stunden dauern könnte. Hier hat Apple einen Riegel vorgeschoben. Als maximale Ausführungsdauer wurden nämlich 10 Minuten festgelegt. Ist die Aufgabe innerhalb dieser Zeit nicht erledigt, wird sie vom iOS automatisch abgebrochen.

Local Notifications

Hierbei handelt es sich um ein ähnliches Konzept wie bei den Push Notifications. Allerdings werden diese lokalen Benachrichtigungen nicht mehr von einem Server über das Internet an die jeweilige App gesendet, sondern werden lokal von der App selbst ausgelöst. Dies funktioniert natürlich nur, wenn sie im Hintergrund aktiv ist. So kann z.B. eine Fernsehzeitungs-App eine Erinnerung an eine Fernsehsendung anzeigen, die man vorher konfiguriert hat. Diese Aufgabe wird dann jedoch nicht mehr von der App selbst übernommen, sondern vom sogenannten Notifications Scheduler des iOS 4. Somit bleibt die App im Hintergrund im Fast-App Switching Status (verbraucht also keine Ressourcen) und wird erst durch den entsprechenden Button innerhalb der Notification wieder in den Vordergrund geholt.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Archetim am :

Eine sehr schöne Zusammenfassung zum Thema "Appletasking". Ich hoffe, dass damit nunmal das ewige Getrolle à la "Hilfe, ich hab 30 Apps in der Taskbar, die fressen meinen Akku leer" aufhören :-)

Ben am :

Is gut zu wissen ;)

danke

Markus am :

Sehr gut be-/geschrieben

spi am :

Ab und zu kommt es vor, dass Apps, die beispielsweise Fast-App-Switching unterstützen, doch beendet sind. Beim Wiederaufruf findet dann ein Neustart der App statt. Ich habe noch nicht herausgefunden, wann das genau der Fall ist. Meine Theorie ist, dass iOS4 bei Neustart einer App ggf. andere, im Hintergrund wartende Apps beendet, um Speicher freizugeben, der für die neugestartete App benötigt wird. Deshalb dauert der Neustart einer App manchmal spürbar länger.

Kann das sein?
Oder gibt es ein Swap-File im Flash-Speicher?

Rhaegar am :

Ja, das ist korrekt. Der Arbeitsspeicher ist begrenzt, entsprechend werden irgendwann, wenn sich zuviele "konservierte" Apps angesammelt haben, Apps geschlossen, um Arbeitsspeicher für neue freizumachen.

Timo am :

Vielen dank für die Info!
Super Zusammenfassung!

SN am :

Aber selbst wenn die Apps doch nur das Fast-App-Switching verwenden, so verbrauchen sie doch Strom, immerhin muss eine gewisse Spannung beim RAM aufrecht gehalten werden, damit die Daten nicht verloren gehen, oder?

Oder ist das tatsächlich so gering?

spi am :

Der Arbeitsspeicher wird komplett refreshed. Da werden keine Speicherbereiche ausgeklammert. Also kein Mehrverbrauch.

Oolia am :

Ich bleib erstmal bei iO3

CHkittie am :

? Tolle Zusammenfassung! Merci!

Bella am :

Super erklärt! Versteht auch der Laie.

bad ice cream am :

I love reading newspapers because it gives me a lot of useful information, especially websites like this.

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Formular-Optionen