AcitivityMonitorCPUTime

Facebook App saugt den iPhone Akku leer

ENGLISH VERSION OF THIS ARTICLE: Facebook app is draining your iPhone’s battery

Ich hatte in letzter Zeit immer eine recht kurze Akkulaufzeit mit meinem iPhone 4S. Nach einem Arbeitstag hatte ich meist weniger als 10% übrig. Und das nach vielleicht 12 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:
AcitivityMonitorCPUTime

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 z.B. 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 soo häufig dann auch wieder nicht.

Also hab ich das mal etwas länger laufen lassen und hab mal 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 eingefrorenem 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 10 min im Hintergrund aktiv bleiben. Das ist z.B. 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 (friert sie ein) spätestens nach 10 min oder eben wenn die App meldet, dass sie fertig ist.

Das nutzen manche Apps natürlich aus. WhatsApp ist z.B. so ein Kandidat. Wenn es vermeintlich beendet ist, läuft es genau diese 10 min im Hintergrund weiter und empfängt dann direkt Nachrichten anstatt sich diese über Apples Push-Benachrichtigungs-Server schicken zu lassen. Nach diesen 10 min ist zwar Schluss, aber startet man innerhalb dieser 10 min WhatsApp erneut, beginnen diese 10 min von neuem.
Es kann also sein, dass WhatsApp durchgehend läuft, wenn man immer innerhalb dieser 10 min 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 10 min Multitasking gibt es noch vier weitere Multitasking-Methoden. Allen gemein ist, dass diese 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 z.B. Spotify im Hintergrund Musik spielen
  • Ortungsdienste nutzen: z.B. für Navigationsapps
  • 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.)

*Update* Aus einem Kommentar bei iPhone-Ticker: „Most VoIP apps also need to be configured as background audio apps to deliver audio while in the background. Therefore, you should include both the audio and voip values to the UIBackgroundModes key. If you do not do this, your app cannot play audio while it is in the background.“
Quelle *Update-Ende*

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, ca. 10 Sekunden irgendwas macht und dann wieder schläft.
FacebookFlags

Ich hab das mal 2 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 10 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:
Chat aus

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 oder sowas. 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 ihrer App ändert.
Ich sehe überhaupt keine Veranlassung, warum die alle Minuten laufen müsste.

Probiert das doch mal bei euch aus und schreibt in die Kommentare ob eure Akkulaufzeit davon irgendwie profitiert.

PS: Habe das auf zwei verschiedenen iPhones getestet, tritt also nicht nur auf meinem iPhone auf.

Update: Hab das jetzt nochmal mit dem Facebook Messenger getestet. Der verhält sich genauso. Läuft auch alle paar Minuten:
Facebook Messenger

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.
Facebook iPad

PS zum Update: 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). Ändert aber nichts am Ergebnis.

Update 2: Auch das Facebook App Update auf Version 6.2 vom 18.06. bringt keine Abhilfe.

Update 3: Habe mir noch einige andere Apps angeguckt.

Update 4 vom 26.11.2013: Facebook hat immer noch nichts geändert. Auch Version 6.7.2 vom 13.11.2013 läuft immer noch alle 15 min für 10 Sekunden im Hintergrund. Ebenso der Facebook Messenger in der Version 3.0.1 vom 18.11.2013.

Update 5 vom 21.02.2014: Im Westen nichts neues. Auch Version 7.0 vom 20.02.2014 ändert nichts am bekannten Verhalten. 🙁

Update 6 vom 18.03.2014: Version 8.0 macht immer noch dasselbe. ABER man kann unter iOS 7 in den Systemeinstellungen unter dem Punkt Hintergrundaktualisierung dieselbe für Facebook ausschalten und dann läuft die App nicht mehr im Hintergrund. Das ist doch schon mal was.

Update 7 vom 28.05.2014: Wie sich herausgestellt hat, bringt der Tipp mit der Hintergrundaktualisierung nichts. 🙁

42 Gedanken zu „Facebook App saugt den iPhone Akku leer“

  1. Interessant. Genau das ist mir in den letzten Tagen aufgefallen: Akku viel schneller leer als sonst, machmal sogar etwa warm. Facebook nutze ich auch ab und an, wie du. Das werde ich mal testen. Irgendwie ziemlich mies.

    1. Mir ist das auch schon aufgefallen, allerdings erst seit 2-3 Wochen. Ich nutze mein iPhone nicht anders als früher. Die FB-App macht bei mir aber generell in den letzten Wochen Probleme und funktioniert immer wieder nicht, lädt länger, stürzt ab usw.

      1. Genau das ist bei mir auch! Muss in einer der Updates drin sein…ich habe die App seit Freitag deinstalliert und gehe über mein mobile browser in FB rein. Seit dem hält meinem Accu wieder ca 3 Tage statt 1 (iphone4). 🙂

  2. Die Android-App hatte vor etwa einem Jahr mal ein ähnliches Problem. Dort war es so, dass die Facebookapp, sofern man kein 3G Netz hatte, alle 5min aufgewacht ist 1-2kb Daten übertragen hat und sich dann wieder schlafen legte. Dies führte zu einem ähnlichen Ergebnis bei der Akku- / CPU-Statistik. Facebook hat dies jedoch dann in einem der nächsten Updates behoben.
    Ich denke mal das handelt sich dort einfach nur um einen ordinären Bug in der iOS-App.

  3. Hallo zusammen,
    Ich habe folgendes Problem. Mein Iphone geht alle 5 Stunden ins Netz über G3, das Nachts oder am Wochenende wenn das Iphone nicht benutzt wird und verbraucht Daten. Der Witz ist, mein Wlan ist Zuhause immer an.
    Die Datenmenge ist unterschiedlich mal ein paar K oder auch 1 bis 2 Mb. Das ganze geschieht auf die Sekunde genau alle 6 Stunden. Hat jemand dazu einen Tipp

  4. Sehr guter Artikel! Ich kann dies nur unterbewusst bestätigen.

    Ich nutze die Facebook App Regelmäßig und bei Akku hatte den einen morgen nach der Ladung innerhalb von 3 Stunden nur noch 60% Akku. In den iPhone Einstellungen fand ich unter Benutzung den Hinweis das seit der letzten vollständigen ladung das iPhone 90 Minuten benutzt wurde.

    Seitdem schließe ich immer alle Apps komplett und der iPhone Akku hält wieder länger als 24std – was deine These zumindest ein wenig bestätigen würde.

  5. Habe es gerade auch getestet und kann deine Beobachtung bestätigen. Facebook fliegt jetzt von meinem Gerät runter.

    Vorgehensweise:
    – Einstellungen/Entwickler/Energy Diagnostics/Logging anschalten
    – XCode/Instruments/Energy Diagnostics/File/Import Energy Diagnostics from device/
    – Window/Manage Flags

    Teste gerade, ob es Netzwerkaktivität gibt.

    1. Hi,

      wo genau finde ich „Einstellungen/Entwickler/Energy Diagnostics/Logging anschalten“ ?

      Hab in der FB App und den iPhone Einstellungen nichts gefunden. Befindet sich das in XCode selber?

      Danke schonmal im Voraus.

  6. Kann mir jemand evtl. einen Link nennen, wo es diesen wirklich tollen und absolut hilfreichen Artikel, gerne auch in ähnlicher Form in englischer oder italienischer Sprache gibt? Das wäre ganz wunderbar … Oder übersetzt der Verfasser des tollen Blogs gar selbst?

  7. Vielen Dank! Genau dieses Problem habe ich in den letzten Tagen auch gehabt und ich wollte mir jetzt sogar schon den Akku meines iPhones austauschen lassen.
    Ich habe hiervon auf stadt-bremerhaven.de gelesen und bin sehr dankbar, da ich jetzt weiß, was mit meinem iPhone los ist.
    Da ich im Moment nicht auf Facebook verzichten kann, werde ich die App jetzt wohl immer beenden müssen.

  8. Die FB-App war in meinen Augen schon immer eine Katastrophe… darum benutze ich die auch nicht.

    Kleiner Tip, falls eigentlich nur die Chatfunktion benutzt wird: Entweder auf den imo-Messenger zurückreifen oder einen beliebigen XMPP/Jabber-Chatclient benutzen. Der FB-Chat ist ein abgewandelter XMPP-Chat und es gibt ein Gateway von FB um den Chat über Jabber-Clients zu nutzen.

    Wenn man dann doch noch etwas anderes nachsehen will, kann man einfach mit Safari in die Mobilansicht von FB gehen. Sieht auch noch so aus, wie die alte App.

    Benutze ich schon seit Ewigkeiten so.

  9. Na wie schön, dass ich zufällig auf diesen Artikel gestoßen bin. Ich habe schon angefangen an meinem iPhone zu zweifeln, weil der Akku in letzter Zeit immer so schnell leer war. Deswegen hatte ich auch immer versucht, einfach alle Apps komplett zu beenden. Aber da denke ich natürlich nicht immer dran. Nur seit die Facebook App jetzt ein paar Tage komplett aus war habe ich wieder mehr „Saft“. Aber das Facebook dafür der Grund ist, weiß ich erst jetzt.

  10. Hi Sebi,

    ist ja nun schon eine Zeit her. Hat sich denn mittlerweile etwas getan (von Seiten FB oder den Äpfeln)?

    Oder lohnt es sich auf dem Thema nochmal „rum zu reiten“ und es nochmal durchs Web zu prügeln, dass FB sich vielleicht dann doch mal veranlaßt fühlt, etwas an seinem „nach hause telefonieren app“ zu ändern?

    Gruß,

    Daniel

    1. Hallo Daniel,

      hab den Artikel gerade aktualisiert. Auch die neueste FB-App ändert nichts. Also gern nochmal durchs Web prügeln. Wird aber vermutlich auch diesmal nichts nutzen.

  11. Moin,
    das mit FB habe ich verstanden und halte mich jetzt auch an Methode 2. Seit kurzem läuft allerding in der Statusleiste permanent das Symbol der Netzwerkaktivität. Habe bereits sämtliche Einstellungen dahingehend geändert, dass nichts mehr im Hintergrund läuft und aktualisiert wird, jedoch ohne Änderung. Hat da jemand eine Idee woran das liegen kann?

    Grüße
    Maik

Kommentar verfassen