Today, Facebook admitted that it’s most popular iOS app abnormally drains the battery on iOS devices.
Facebook’s Engineering Manager Ari Grant took to (you guessed it) his Facebook to explain the reasons for the battery drain.
The first issue we found was a “CPU spin” in our network code. A CPU spin is like a child in a car asking, “Are we there yet? Are we there yet? Are we there yet?”with the question not resulting in any progress to reaching the destination. This repeated processing causes our app to use more battery than intended. The version released today has some improvements that should start making this better.
The second issue is with how we manage audio sessions. If you leave the Facebook app after watching a video, the audio session sometimes stays open as if the app was playing audio silently. This is similar to when you close a music app and want to keep listening to the music while you do other things, except in this case it was unintentional and nothing kept playing. The app isn’t actually doing anything while awake in the background, but it does use more battery simply by being awake. Our fixes will solve this audio issue and remove background audio completely.
I should note that this battery drain also occurred even when Background App refresh was turned off. In theory, iOS should park the App after it idles for a certain period of time when Background App refresh is turned off. Interesting to see how Facebook’s software engineers circumvent the OS’ ability to “park” apps in the background.