iOS still has a problem with “background activity”
Published by marco on
iOS has long had a setting that lets you decide whether “Background Refresh” is enabled. I have always had it disabled because I don’t need any of my apps doing things when I’m not using them. I’m more interested in my phone being there for me to look up something useful than I am in looking for a charger or carrying a power brick wherever I go.
This does not mean that apps are not doing things in the background, though. The article Background App Refresh Explained by David Johnson on Dec 6, 2019 (Techzillo) explains that the “background” state means that,
“[t]he app is in the background and executing code. Most apps enter this state briefly on their way to being suspended. However, an app that requests extra execution time may remain in this state for a period of time.”
When “Background App Refresh” is enabled, apps are given more leeway to do things when in a mode other than
Active. The article Updating Your App with Background App Refresh (Apple) provides more information on how applications hook into this behavior and set fetch intervals and perform work.
That all sounds well and good, but I’m still seeing some apps running absolutely amok on iOS 13, seemingly ignoring all of the background settings and churning through heroic amounts of energy and consuming hours of CPU, all without my using the phone at all.
It’s not active. There is no app that is active.
Obviously, there is an app in the foreground, but the phone is off and lying on a desk. I have left no operation running other than leaving communication clients open. They are notified of messages through Apple’s centralized push-mechanism, which is very efficient.
The other day, my battery was flat and I could not imagine what had done it. It was Shazam.
Just to be clear, Background App Refresh was disabled.
Also, Shazam reflects this in its own settings.
Shazam doesn’t care, though. Shazam gonna do its own thing.
Apple acquired Shazam almost two years ago. All the app is supposed to do is listen to a song and tell me what it is. What it instead does is it manages a completely separate song list from Apple Music as well as starting to play completely unasked-for videos.
I looked up one song and then made the mistake of not killing the Shazam app with extreme prejudice.
I imagine it burbled its way through about 15 hours of playing videos and looking shit up and just launching threads that waste time for no conceivable reason. At any rate, without “Background App Refresh” enabled, it consumed 15 hours of time in the background. The setting is, for all practical purposes, meaningless.
I’d be tempted that this is just another way that Apple gives its own apps special permissions, but I’ve seen this same behavior with Garmin Connect and other apps. I wrote about it in iOS Battery Drain in 2017, where the Clock used up over 40% of my battery and the Home Screen also managed to use 100% of the battery at one point, nearly draining the phone. At least you can now tell which application iOS thinks used the battery; in the old days, things were more mysterious.
At this point, if you want to reliably keep your phone alive for a longer period—if you’re silly enough to want it to be there and usable when you need it, rather than having it fritter away its entire battery doing shit you never asked for—then Airplane Mode is really your only reliable friend.
Killing apps manually is a pain and hard to remember to do, but it would probably help. It’s like being back on Windows 3.1 with cooperative multi-tasking.
Disabling “Background App Refresh” might be preventing even more horrific battery drainage, but it doesn’t stop nearly enough of it. Apps are still seemingly free to go wild often enough to be an absolute nuisance.