Facebook-Apps für iPhone und iPad als Akkukiller [Update]
![Facebook-Apps für iPhone und iPad als Akkukiller [Update]](https://assets.t3n.sc/news/wp-content/uploads/istockphoto/13-04/facebook_ipad.jpg?auto=format&fit=crop&h=348&ixlib=php-2.3.0&w=620)
Ich hatte in letzter Zeit immer eine recht kurze Akkulaufzeit mit meinem iPhone 4S. Nach einem Arbeitstag hatte ich meist weniger als zehn Prozent übrig. Und das nach vielleicht zwölf Stunden, in denen ich es nicht wirklich häufig benutzt habe. Also hab ich mich mal auf die Suche nach der Ursache gemacht.
Als iOS-Entwickler war mir Instruments aus Apples Developer-Tools bekannt. Damit kann man in erster Linie seine selbst entwickelten Apps benchmarken und langsame Stellen oder auch Speicherlecks finden. Davon abgesehen kann man sich mit Instruments aber auch einfach die laufenden Prozesse des iPhones anzeigen lassen. Quasi so wie auf dem Mac mit dem Aktivitätsmonitor. Da gibt es dann eine hübsche Übersichtsseite. Dort fiel mir folgendes ins Auge:

Die Prozesse mit der meisten CPU-Zeit.
Das ist eine Übersicht der Prozesse, die am meisten CPU-Zeit gebraucht haben. Im Klartext: die Apps, die am längsten gelaufen sind. Die oberen vier sind Systemprozesse (SpringBoard zeigt zum Beispiel die Homescreens an), ganz unten ist die Facebook-App. Die braucht also mehr als doppelt so lange wie DTMobileIS (das ist der Prozess auf dem iPhone, der Instruments mit den Daten versorgt). Das kam mir doch etwas viel vor. Ich gucke zwar häufig bei Facebook rein, aber so häufig dann auch wieder nicht.
Also hab ich das mal etwas länger laufen lassen und hab die Flags in Instruments beobachtet. Die Flags zeigen an, wann eine App gestartet, wann sie beendet wurde und was mich besonders interessierte: wann sie in den Hintergrund geschaltet und wann sie schlafen gelegt wurde.
Um das zu verstehen muss ich ein wenig ausholen: Wenn man eine App startet, dann läuft sie im Vordergrund. Klar. Drückt man nun den Homebutton, wird die App aber nicht beendet (terminiert), sondern nur schlafen gelegt. Schläft eine App, ist sie eingefroren und tut nichts (verbraucht keine CPU-Zeit), sie belegt allerdings Speicher. Das hat den Vorteil, dass sie sofort wieder da ist, wenn man sie wieder startet. Sie muss ja nicht gestartet werden, sondern wird nur schnell aufgetaut. Apps können im eingefrorenen Zustand auch komplett beendet werden (vom System, wenn der Speicher knapp wird, oder vom Benutzer über die Multitasking-Leiste, was aber eigentlich nicht nötig ist).
Seit iOS 4 gibt es nun aber Multitasking. Damit können Apps beim Beenden noch bis zu zehn Minuten im Hintergrund aktiv bleiben. Das ist zum Beispiel praktisch für Apps wie Instacast, die dann im Hintergrund noch die Podcasts zu Ende laden können (früher musste die App dafür dann halt geöffnet bleiben) oder auch für meine App Home Remind, die dann im Hintergrund noch die Erinnerung abschicken kann. Das ist auch nicht weiter schlimm und das System beendet diese Apps spätestens nach zehn Minuten (friert sie ein) oder eben, wenn die App meldet, dass sie fertig ist.
Das nutzen manche Apps natürlich aus. WhatsApp ist zum Beispiel so ein Kandidat. Wenn es vermeintlich beendet ist, läuft es genau diese zehn Minuten im Hintergrund weiter und empfängt dann direkt Nachrichten, anstatt sich diese über Apples Push-Benachrichtigungs-Server schicken zu lassen. Nach diesen zehn Minuten ist zwar Schluss, aber startet man innerhalb dieser Zeit WhatsApp erneut, beginnen sie von neuem.
Es kann also sein, dass WhatsApp durchgehend läuft, wenn man immer innerhalb dieser zehn Minuten eine neue Nachricht bekommt, dann WhatsApp öffnet und wieder schließt. Aber gut, so beliebt werden wohl die Wenigsten von uns sein, dass das wirklich ein Problem wird. Zusätzlich zu diesem Zehn-Minuten-Multitasking gibt es noch vier weitere Multitasking-Methoden. Allen gemein ist, dass sie zeitlich unbegrenzt sind. Und viel wichtiger: Diese werden von den Apps selbst festgelegt, doch dazu gleich mehr.
Diese vier Methoden sind:
- Audio abspielen: so kann zum Beispiel Spotify im Hintergrund Musik spielen
- Ortungsdienste nutzen: zum Beispiel für Navigations-Apps
- Newsstand-Downloads: geht nur bei Newsstand-Apps, also neue Ausgaben im Hintergrund laden
- VoIP-Nutzung: Apps wie Skype, über die man telefonieren kann, dürfen auch die ganze Zeit laufen und auf Anrufe warten
So, kommen wir nun zu unserem Fall zurück: Facebook. Wie gesagt: Die App legt fest, was sie davon nutzt. Facebook nutzt davon gleich zwei: Audio und VoIP! VoIP, seit man auch über Facebook telefonieren kann, und wofür das Audio, weiß ich selbst nicht (Allerdings wird das schon irgendwie genutzt werden, denn Apple überprüft im Review-Prozess, ob diese Multitasking-Methoden ordnungsgemäß verwendet werden).
Das heißt, die Facebook-App kann prinzipiell die ganze Zeit im Hintergrund aktiv sein. Laut Instruments ist sie das nicht, zumindest nicht die ganze Zeit. Anhand der Flags kann man sehen, dass sie alle paar Minuten kurz aufwacht, etwa zehn Sekunden irgendwas macht und dann wieder schläft.
Ich hab das mal zwei Stunden laufen lassen und wie man in der Spalte ganz rechts an den Zeiten erkennen kann, wacht die Facebook-App in schöner Regelmäßigkeit auf, macht ziemlich genau zehn Sekunden etwas und schläft dann wieder. Und das den ganzen Tag lang. Das erklärt, warum sie Spitzenreiter beim CPU-Zeit-Verbrauch ist. Theoretisch könnte sie euch in dieser Zeit auch orten und das an Facebook schicken, allerdings habe ich dafür keine Indizien gefunden, also macht Facebook das wohl nicht.
Jetzt habe ich nach einer Einstellung gesucht, mit der man Facebook dieses Hintergrundleben abgewöhnen kann. Da dachte ich: Man kann doch den Chat innerhalb der App deaktivieren. Vielleicht läuft die App ja nur dauernd, weil sie auf Anrufe wartet. Hier das Ergebnis mit deaktiviertem Chat:
Wie man sieht, macht das überhaupt keinen Unterschied. Abgesehen davon hab ich keine weitere Einstellung gefunden, die daran irgendwas ändert.
Es gibt daher wohl nur zwei Lösungen zu diesem Problem: 1.: Facebook-App löschen oder 2.: die Facebook-App nach jeder Benutzung über die Multitasking-Leiste beenden (Home-Button doppelt schnell hintereinander drücken, dann erscheint unten eine Leiste, dort dann länger auf ein Symbol drücken bis sie anfangen zu wackeln und dann die Facebook-App mit dem kleinen Minus beenden). Jetzt ist sie wirklich beendet und wird auch nicht von allein gestartet. Vergisst man das Beenden natürlich einmal, läuft sie wieder wie gehabt im Hintergrund.
Ich halte mich momentan an Methode 2. Seitdem taucht die Facebook-App in der Liste der größten CPU-Zeit-Verbraucher nicht mehr auf und mein Akku hält wieder länger. Besser wäre es natürlich, wenn Facebook das in der App ändert. Ich sehe überhaupt keine Veranlassung, warum die alle paar Minuten laufen müsste. Probiert das doch mal bei euch aus und schreibt in die Kommentare, ob eure Akkulaufzeit davon irgendwie profitiert.
P.S.: Habe das auf zwei verschiedenen iPhones getestet, tritt also nicht nur auf meinem iPhone auf.
[Update 30. Mai 2013] Ich habe das jetzt nochmal mit dem Facebook Messenger getestet. Der verhält sich genauso. Läuft auch alle paar Minuten:
Außerdem hab ich die Facebook-App auch auf dem iPad ausprobiert (den Messenger gibt’s ja nicht für’s iPad). Dort läuft er wie zu erwarten genauso oft im Hintergrund wie auf dem iPhone. Ist auch kein Wunder, ist ja schließlich die gleiche App für iPhone und iPad.
P.S. zum Update: Ich habe das jetzt mit der in diesem Kommentar beschriebenen Methode gemacht (da loggt das iPhone selbst die Aktivität und muss nicht live am Mac angeschlossen sein). Das ändert aber nichts am Ergebnis.[/Update]
Über den Autor
Sebastian Düvel ist iOS- und Mac-Entwickler und Blog-Urgestein – seinen Blog findet ihr unter blog.hagga.net. Hauptberuflich ist er Azubi zum Anwendungsentwickler bei t3n.
Weiterführende Links
- Facebook App saugt den iPhone Akku leer – blog.hagga.net
- Facebook-Seitenmanager für Android mit schwerer Sicherheitslücke [Update] – t3n News
- WhatsApp-Alternativen – Ein Blick über den Tellerrand – t3n News
- 5 clevere und skurrile iPhone-Ladegeräte für unterwegs – t3n News