I’m standing in line at the coffee shop. A man in front of me is frantically swiping up on all the cards in the App Switcher to force quit the applications he
just launched a minute ago. I know why he’s doing this, but I can’t help asking him about it. “I’m doing this to save battery,” he answers, not knowing what he just did has the exact opposite effect on his iPhone’s battery life.
Telling him he’s wrong and explaining why force quitting apps drains his battery faster than leaving them in the App Switcher is a lost cause. I know it’s a lost cause because I have been telling people the same thing for years. No one, including members of my own family, can break this bad habit and trust the operating system will manage their apps in a way that will actually save battery life.
If you are someone who force quits apps believing your battery will last longer, then stop what you are doing and read this.
Long story short
For those of you who don’t care about the specifics, here is the gist of the story:
- Unless an app is not behaving as it should, you should never force quit an app
- Unlike what many people believe, force quitting an app actually wastes battery
- Apple is giving developers proper tools to have their apps work efficiently in the background
- Users should trust the system is effectively managing apps that aren’t active
Now if you want to geek out about the topic of force quitting apps, read on for a detailed explanation.
Terminology: closing vs force quitting
For the sake of clarity, let’s make sure we are on the same page about basic terminology.
Closing an app is done by pressing the Home button.
Force quitting an app requires the user to double press the Home button, then swipe up on the app card in the App Switcher.
The myth is of course that force quitting applications by removing them from the App Switcher will save battery because these apps won’t be running in the background any longer. That is what people believe, and in many cases, that’s what they have been told by friends, family, or even worse, by Apple employees.
The reality is that once you close an application by pressing the Home button, it stops using CPU and the app memory usage is suspended. At that time, the app is not actively running in the background.
There are exceptions, which we’ll learn about, but as a general concept, pressing the Home button freezes the app, putting it in a suspended state that uses virtually no battery. By keeping an app in memory, the system makes sure you can pick it up where you left off when you launch that app again.
When you force quit an app, it offloads the memory used by this app, which of course has a negative impact, albeit very small, on your battery. Next time you launch this app, the operating system will run processes to load it back in memory, using yet more battery. By force quitting the app and launching it again soon after, you actually drained your battery twice, for no reason, since it was not consuming any power to begin with.
The take away is that once you press the Home button, the app is in a suspended state using no CPU, and although it is still in memory, this has virtually zero effect on battery.
Again, there are exceptions to this general rule of thumb, and we will discuss them later.
Think about it this way
On the last episode of our podcast Let’s Talk Jailbreak, I made an analogy which I was told by several listeners made lots of sense, so I figured I would explain it here in details.
Let’s imagine you are watching TV and you’re thirsty. You go to the kitchen, grab a glass, fill it up with water, and drink half of it. You then empty the other half of the glass in the sink, and go back to the couch.
Five minutes later, you are thirsty again. You go back to the kitchen, fill up the glass again, drink half of it again, and throw the other half in the sink.
It doesn’t make sense, right? Why would you throw that water away when you’re very likely to be thirsty again in the near future? Why wouldn’t you leave that half full glass on the counter and drink from it when needed instead of filling it up again?
You are wasting resources, and that is exactly what you are doing when you force quit an app. You are wasting battery by taking the app out of memory, and loading it back once you launch the app again.
How iOS handles things when you close an app
In a post detailing misconceptions about iOS and multitasking, Fraser Spears explains that apps can be in one of five states of execution:
- Not running: the app has not been launched or it’s been terminated. It’s not resident in memory. It is not using battery.
- Inactive: the app is in the foreground but not being used, such as when you lock your device while an app is currently on screen. It is resident in memory, but uses no CPU or battery.
- Active: the app is currently being used. It uses CPU and is resident in memory. It uses battery.
- Background: the app is still processing code, but it is no longer on screen. It uses CPU and is resident in memory. It uses battery.
- Suspended: the app is no longer on screen or executing code. It is not using CPU but it is resident in memory. It is not using battery.
From active to background, to suspended
If you are currently using an app, it is considered to be active. It’s using CPU and memory. As soon as you press the Home button, the app is moved to the background where it will stay for a very short period of time (a few seconds) before being suspended. Within seconds after you pressed the Home button, the suspended app is no longer using CPU but it is still resident in memory, so that it can resume faster when you next open it.
From suspended to not running
If you are launching a memory-intensive game, for instance, and your device needs memory, the system may purge suspended apps to make more space for the foreground app. Purging the suspended app will put it in the “not running” state and it will then be completely removed from memory. Simply explained, it is the equivalent of iOS automatically force quitting an app on your behalf to free up memory for other apps.
You can read more about execution states for apps in Apple’s app programming guide for iOS.
Exceptions to the rule
It is time to talk about exceptions to the rules I just mentioned. In its developer library, Apple goes in great details about these types of apps, which I will briefly sum up here.
Apps that need to finish executing a short task: these are apps that have initiated a process in the foreground but are offered a time extension to finish that process once the app is closed. For example, if you are using a third-party email client to send a very large file, you may tap “Send” and close the app. This app can request an extension to be backgrounded while it completes the task. Once the task is done, the app will be suspended.
Apps that need to download content in the background: these are apps that initiate downloads in the foreground but need time to finish that task when the app is moved to the background. According to Apple, these apps can hand off management of those downloads to the system, allowing the app to be suspended or terminated while the download continues. A good example would be a podcast application downloading a new episode. You can initiate the download, close the app, but the download will be processed in the background.
Apps that need to execute long-running tasks: these are apps that must be allowed to run in the background to perform specific types of tasks, such as playing audible content (a music app), recording audio, actively keeping track of location (a navigation app), supporting Voice over Internet Protocol (Such as Skype), processing new content regularly (magazine-style apps), and receiving regular updates from external accessories (an app linked to a physical heart rate monitor).
Once again, the user must trust that the system will efficiently manage these apps.
You can read more about background execution in Apple’s app programming guide for iOS.
About Background App Refresh
With all that said, some of you are probably wondering what happens to applications for which Background App Refresh is enabled. I couldn’t find much technical details about this feature, except for this support document:
After you switch to a different app, some apps run for a short period of time before they’re set to a suspended state. Apps that are in a suspended state aren’t actively in use, open, or taking up system resources. With Background App Refresh, suspended apps can check for updates and new content.
As it turns out, an earlier version of this same document gave much more details about how Background App Refresh actually works:
Some apps can continue to run in the background. You can allow these apps to refresh themselves by turning on Background App Refresh. This settings lets apps check for new content and download updates, or retrieve updated content in the background when they receive push notifications.
To save battery, apps running in the background refresh at certain times, like when your device is connected to Wi-Fi, plugged into a power source, or being actively used. iOS learns patterns based on how you use your device and tries to predict when an app running in the background should refresh. It also learns when the device is typically inactive, like at night, to help keep apps from refreshing when you’re not using your device. Apps can also schedule background refreshing based on your location.
Based on that earlier version of the support document, and also based on common sense, it’s safe to assume that iOS is smart about the way it refreshes apps in the background, and won’t recklessly update apps all day long. For example, it won’t continually refresh your Facebook feed in the background throughout the day.
If you’re conscious about battery life, it’s probably a good idea to venture into Settings > General > Background App Refresh, and disable apps you don’t use or care enough to let them update in the background. Personally, I turned off Background App Refresh for about 80% of my apps. I just don’t care enough about these being updated to let them run without me manually launching them.
So, when should you force quit apps?
In theory, you should never have to force quit applications. In practice, it’s a little more subjective because there are times where you must force quit an app, such as when it doesn’t function properly, or if it is frozen. In this case, it is of course suggested to force quit applications. For everything else, you should let iOS handle it because that’s its job. Yours is just to enjoy the device.
Now do your friends and family a favor. Next time you see someone force quitting applications, either send them a link to this post, or explain to them what doing that is actually a terrible idea.