John Gruber penned a piece at Daring Fireball hoping to clear up the confusion for folks who routinely force quit apps on iOS, where he said:
The single biggest misconception about iOS is that it’s good digital hygiene to force quit apps that you aren’t using. The idea is that apps in the background are locking up unnecessary RAM and consuming unnecessary CPU cycles, thus hurting performance and wasting battery life.
That’s not how iOS works. The iOS system is designed so that none of the above justifications for force quitting are true. Apps in the background are effectively “frozen”, severely limiting what they can do in the background and freeing up the RAM they were using. iOS is really, really good at this.
His advice is clear: iOS is so good at managing this that you really never need to worry about it.
Gruber is 100% correct that this is true about iOS and most apps. He quotes an email from Apple’s Craig Federighi along with five pieces from developers who support his premise, and all five of those developers are folks who make apps that behave quite well within the confines of iOS.
Some apps, however, do not behave well in this regard, and we’ve researched this quite a bit for several discussions on Mac Geek Gab (shameless plug: that’s the tech support podcast we’ve been doing for 12 years where we answer people’s questions and share tips).
Background Refresh Is Only a Small Part of It
Savvy iOS users know that you can go into Settings > General > Background App Refresh and choose which apps get permission to properly re-launch at times. If you force quit one of these apps, though, it generally will not get permission to re-launch, and that may be your intended outcome.
For a good example of this, check out the (stellar) Deliveries app. This app behaves quite well, but even it is affected by a force quit. From their FAQ entry answering “Why am I not receiving any notifications?” they say:
Don’t force the app to close by swiping up on the app when the multitasking view is open. If you do this then iOS will not let the app run in the background until you manually open the app again.
But Some Apps Just Keep Running … For A While (and Longer if They Could!)
When we stumbled onto this about Deliveries, I thought maybe I found a solution for the apps that have real issues: those that chew up battery life in the background. Unfortunately, disabling Background Refresh entirely or even just specifically for apps like Facebook and Sonos does not stop them from consuming CPU in the background. And they do consume CPU in the background.
If you have Xcode, you can run Activity Monitor inside of the Instruments app and literally watch background apps consume CPU. This goes quite contrary to the iOS design philosophy that Gruber describes and, thankfully, only happens for a few apps.
Facebook and Sonos are, for me, the two that regularly keep running even after I’ve switched to another app. I’m not sure what Facebook is doing (are any of us?) but my assumption is that the app is keeping my feeds processed so that they load faster the next time I switch back to it. Regardless of the reason it’s running, I routinely force quit Facebook when I know I’m not going to use it for a while.
Sonos is a bit different, and my battery issues with that app really took off when they added lock screen integration to the app. It’s cool to see my iPhone screen stay up-to-date with the currently-playing song, and being able to control my Sonos speaker’s volume with the volume buttons of my sleeping iPhone in my pocket is very handy, but it comes at a CPU cost. When the music stops playing, it seems like the app still continues to run, so I’ve gotten in the habit of force-quitting that app, too, just to preserve battery life.
Most Apps are OK
It’s important to restate that Gruber’s premise is generally correct. Most apps behave quite well when sent to the background. They freeze and iOS frees up the resources. You can thank both Apple and your favorite app’s developers for this. But some apps are still problematic, even if they come from companies you love.
You already likely have a pretty good idea which of your favorite apps are problematic, if any. Check with Instruments if you’re geeky, check with Settings > Battery > Battery Usage if you’re not. Once you’ve narrowed it down, feel free to continue to force quit the few (if any) apps that cause you trouble.
What about RAM usage? Apps don’t run from the installed file, usually they are loaded to RAM and they run from there. Those frozen apps in the background are still taking up some amount of RAM, even if they are not actively running.
RAM usage is something iOS is great about. First it tells a backgrounded app to jettison all unnecessary resources to free up RAM and then, if the app doesn’t comply or doesn’t jettison enough, it’ll remove the app from RAM entirely.
So, for an app like Facebook that is using resources while in background, is it better to simply force quit the app after use, or turning off its ability to refresh in the background?
Generally, it’s worth trying both. First, disable Background Refresh and see if that helps. If it doesn’t, then force-quitting is your last resort.
With the Facebook app, specifically, I’ve found that the issue is (or was) that it just kept running and doing things after I switched to another app. In this case, Background Refresh wasn’t even being triggered. The app was just still running, not relaunching.
Background Refresh means the app is permitted to set a schedule at which it can request a relaunch. As we discovered with the Deliveries app, force-quitting can disrupt a Background Refresh, so you need to be informed and manage these things intentionally.
It’s also worth noting that recent updates to the Facebook app have had it running a lot less in the background for me. I don’t have enough evidence yet to change my advice on it, but that may be coming.
I habitually quit: 1) Apple Maps, 2) Waze, 3) RadarScope when not using them. I haven’t definitively benchmarked any of this, but there have been many a day when I look at my battery percentage, wondered why it was so low for that point in the day, and then realized, “Oh, one of those 3 apps are running.”
And on days when I don’t have any of them running … no battery issues.
So while I concur that for many apps there is no need to quit them, blanket statements like Gruber’s and Federighi’s are just wrong.
Old UNIX Guy
I haven’t tested this in recent iOS versions, but I’ve gotten into the habit of always force quitting anything that tracks you via GPS. These seem to be constantly updating your location and using up battery.
There are also some apps that just get “stuck!” If there is a network hiccup or some other connectivity issue, some apps are not as robust to recover from those errors. In those cases, you will have to force quit the app to get it to reset. I have found streaming apps particularly susceptible to this type of problem
Apps, like the programmers who create them, are not perfect. There are other cases when apps get into an unknown state and either freeze or do unexpected things. Recently, an iPad app was not responding to the touch screen properly and putting the pointer in the wrong place. After I force quit the app and restarted it, the app worked fine.
Finally, when all else goes haywire, it is time to restart the iDevice. It seems that a lot of network errors will cause problems with the iDevice. If I had the time and patience I would probably hook it up to Xcode to see what the problem really is, but I suspect it is running out of network resources–I am guessing I would see a lot of “CLOSE WAIT” connections. I just got into a habit of rebooting my iDevices once per week.