Bei der Entwicklung von iOS 8 hat Apple großen Wert auf Erhöhung der Performance sowie der Betriebszeit der Endgeräte gelegt. Abgesehen von einigen wenigen Ausnahmen laufen die in der Multitasking-Übersicht ersichtlichen Anwendungen nicht wirklich im Hintergrund. Wenn der Home-Button des iOS-Gerätes gedrückt wird oder die Multitasking-Geste ausgeführt wird, fordert iOS die laufende Anwendung auf, sich zu schließen. Fast immer kommen die Apps dieser Aufforderung nach, beenden sich komplett und beanspruchen keine Ressourcen mehr. Über die Multitasking API besteht die Möglichkeit, weitere Aktivitäten voran zu treiben.
Multitasking wurde von Apple initial mit iOS 4 - also zeitgleich mit dem iPhone 3GS - zur Nutzung als API bereitgestellt. Diese API ermöglicht es dem Entwickler, Apps für rudimentäre Ereignisse zu registrieren, um diese vom System zu empfangen. Somit ist es etwa möglich, GPS-Anwendungen auch im Hintergrund zu betreiben. In diesem bis einschließlich iOS 6 zur Verfügung gestellten Multitasking standen dem Entwickler jedoch keine Möglichkeiten zur Verfügung, effizient mit den Ressourcen des Endgerätes umzugehen.
So hat das iOS System vor iOS 7 nach der Gerätesperre über einen festen Zeitraum hinweg (ca. bis zu 10 Minuten) noch Rechenzeit bereitgestellt, diese dann aber zu einem fix definierten Zeitpunkt abgeschaltet. Ziel dieser Übung war es, Apps die Möglichkeit zu bieten, etwa mit ihren Downloads fertig zu werden - dies wurde ihnen aber nicht garantiert und gegebenenfalls durch iOS 6 hart unterbrochen. Auch ein mehr als zehnminütiger Download von Daten im Hintergrund war nicht möglich, erschwerend kam hinzu, dass alle Downloads (auch unterschiedlicher Apps) gleichzeitig abliefen.
Zwischenzeitlich stellt iOS Entwicklern die folgenden Möglichkeiten für Hintergrunddienste zur Verfügung:
Audio und Airplay |
Die App gibt Audiomaterial auch im Hintergrund wieder oder zeichnet Audiosignale weiter auf. Dies betrifft auch das Streamen von Audio oder Videomaterial per Airplay. |
Location Updates |
Aktualisierung der User Location - auch im Hintergrundbetrieb der App. |
Voice over IP |
Bereitstellung von Telefonie über VoIP - auch wenn sich die App im Hintergrund befindet. |
Newsstand downloads |
Download von Inhalten aus dem Apple-Newsstand. |
External accessory communication |
Kommunikation mit entsprechend zertifizierter Hardware um deren Status zu abzufragen oder Status zu setzen. |
Uses Bluetooth LE accessoires |
Kommunikation mit Bluetooth Zubehör. |
Acts as a Bluetooth LE accessory |
Kommunikation über Bluetooth. |
Background fetch |
Die App kann Daten laden, auch wenn sie sich im Hintergrund befindet. |
Remote notifications |
Events, die z.B. durch angeschlossene Hardware (Kopfhörer Fernbedienungen) ausgelöst werden. |
Multitasking im Überblick
Seit iOS 7 gibt Apple den Entwicklern drei neue Arten des Multitaskings per API an die Hand, hierzu gehören: Background Fetch, Remote Notifications und die Background Transfer Services. Diese drei neuen APIs geben dem Entwickler die Möglichkeit, Anwendungen die Möglichkeiten des Gerätes (iPad, iPhone) auch mit Hinblick auf die Akkulaufzeit optimal zu nutzen - siehe Abbildung 1.
App Status
Die Multitasking-Dienste können zu unterschiedlichen Applikationsstatus verwendet werden. Dabei stehen die folgenden Stati zur Laufzeit einer Applikation innerhalb von iOS zur Verfügung:
Not running |
Die App wurde nicht gestartet oder wurde durch das System beendet. Die Anwendung wird weder durch das System regelmäßig geweckt noch kann sie Code ausführen. |
Inactive |
Ist nur ein temporärer Status, der im Übergang zwischen den anderen Stati angenommen wird. |
Active |
Die Anwendung ist im Vordergrund aktiv, empfängt Benachrichtigungen und führt Code aus. Dies ist der normale Status einer App. |
Background |
Die Anwendung befindet sich im Hintergrund und führt noch Programmcode aus. In einer App kann zusätzliche Verarbeitungszeit angefordert werden, um länger in diesem Modus zu verharren, um Prozesse abschließen zu können. |
Suspended |
Eine App ist gestartet, befindet sich im Hintergrund - führt aber keinen Code aus. Pausierte Apps werden regelmäßig durch iOS 8 geweckt und erhalten so die Möglichkeit, innerhalb kleiner Zeitfenster Code auszuführen. |