Akku-Killer: Welche iOS-Apps zu viel Strom verbrauchen

Seite 3: Paralleles Arbeiten

Inhaltsverzeichnis

Apple hat nicht nur seine mobilen Geräte, sondern insbesondere auch iOS und seine App-Schnittstellen von Grund auf darauf ausgelegt, möglichst wenig Energie zu verbrauchen. Frühe iOS-Versionen kannten in dieser Hinsicht keine Kompromisse, zumindest bei Software aus dem App Store: Ein Drücken auf den Home-Knopf beendete die gerade geöffnete App rücksichts- und restlos. Auf diese Art ließ sich zwar hervorragend Strom sparen, viele Dienste wie das Ermitteln des aktuellen Standortes im Hintergrund waren dadurch jedoch nicht realisierbar. Erst mit iOS 4 hat Apple Apps die Möglichkeit eingeräumt, unter gewissen Auflagen im Hintergrund aktiv zu bleiben und beispielsweise Internetradio zu empfangen.

Dabei ist Multitasking kein neues Konzept, sondern auf Macs schon seit Zeiten des ursprünglichen OS X gang und gäbe. Allerdings gibt es in der iOS-Implementierung für den Nutzer mindestens zwei wichtige Unterschiede: iOS gönnt sich die Freiheit, Apps nach eigenem Gutdünken zu beenden – und in bestimmten Fällen auch wieder im Hintergrund zu reaktivieren. Das greift beispielsweise dann, wenn eine App auf eingehende Telefonate wartet, ohne dabei geöffnet zu sein.

Das forcierte Beenden soll einerseits dafür sorgen, dass genug Speicher für gerade genutzte Anwendungen zur Verfügung steht. Andererseits soll es im Umfeld der sparsamen Mobilprozessoren verhindern, dass eine App im Hintergrund den Prozessor (zu) stark belastet. Apple schreibt genau das auch seinen Entwicklern vor: Wenn eine App in den Hintergrund wechselt, soll sie sich schon einmal darauf gefasst machen, Tasks möglichst schnell zu beenden. Ganze fünf Sekunden hat die App dafür im besten Fall noch Zeit. Mit einem speziellen Aufruf kann sie noch eine letzte Nachfrist von etwa 10 Minuten erzielen – Amazon Cloud Drive oder Dropbox nutzen das beispielsweise, um schnell noch Daten im Hintergrund hochzuladen. Hält sich eine App nicht an diese Vorgaben oder wagt es gar, OpenGL-ES-Code auszuführen, setzt es einen mit der Bratpfanne: iOS suspendiert die App sofort und gönnt ihr nicht einmal die paar Sekunden Hintergrund-Aktivität.

„Manage Flags…” heißt der Befehl im Window-Menü von Instruments, über den sich alle Ereignisse einer App schnell heraussuchen lassen.

Tatsächlich durchläuft eine App, die gerade im Vordergrund war, bei einem App-Wechsel zwei Zustände: Der gerade beschriebene Hintergrund-Zustand ist nämlich eigentlich nur ein kurzzeitiger Übergang in den Suspend-Zustand. Dieser ist sozusagen der wirkliche Schlafmodus: Wer hier landet, hat nicht mehr viel zu melden. Wird Speicher benötigt, entfernt iOS den größten Verbraucher im Hintergrund. Das Prozedere wird Purging – im übertragenen Sinne Aufräumen – genannt. Eine Hintertür hat Apple jedoch offen gelassen: Wenn es einen besonderen Grund gibt, dann dürfen Apps mit guten Argumenten im Hintergrund weiterlaufen oder sich regelmäßig reaktivieren lassen. Apps, die zum Beispiel Audio abspielen oder aufnehmen, die Geo-Position bestimmen, über Bluetooth oder VoIP kommunizieren oder als Kiosk-Anwendung Magazin-Inhalte herunterladen, erfüllen Apples Vorgaben für den Dauerbetrieb.

Mit iOS 7 sind noch zwei weitere Techniken hinzugekommen, die den Hintergrundbetrieb beziehungsweise ein Aufwecken einer App bei Bedarf rechtfertigen: „Fetch“ kommt zum Einsatz, wenn Apps regelmäßig Datenhäppchen aus dem Netz nachladen wollen, weil neue Inhalte anstehen. Apples hauseigene Wetter-App beispielsweise bedient sich dieser Methode. Die „remote-notification“ behandelt einen ähnlichen Fall, nämlich wenn das Eintreffen einer Push-Nachricht einen Download im Hintergrund erforderlich macht. Das könnte zum Beispiel ein neu gepostetes Foto in einem sozialen Netzwerk sein oder eine neue Notiz in Evernote. Die App erhält dann Gelegenheit, den Download abzuschließen, bevor der Anwender die Push-Nachricht zu sehen bekommt: Der Inhalt wartet dann bereits auf den Nutzer, wenn dieser die App öffnet.

Die Info.plist-Datei gibt Aufschluss darüber, ob sich eine App überhaupt für den Hintergrund-Betrieb qualifizieren will. Ausschlaggebend ist der Schlüssel „UIBackgroundModes”.

Besonders dabei ist, dass iOS mit dem Nutzer mit lernt und regelmäßig benutzte Apps bevorzugt behandelt. Diese dürfen dann öfter aufwachen und Daten nachladen. Ferner bevorzugt das System Apps, die kleine Datenhäppchen anfordern. Dabei versucht iOS zusätzlich Strom zu sparen, indem es in der Regel mehrere solcher Apps auf einmal aufweckt, um Funk- und andere Komponenten möglichst selten zu strapazieren. Selten verwendete Apps bleiben hingegen dauerhaft inaktiv, selbst wenn sie diese Methode unterstützen sollten.