Every time the software on our phones receives a big update, we hear how it will perform better and use less of our battery. While it's often true, the ideas and how they are implemented need plenty of fine-tuning to meet expectations. Android 7.0 improves on two existing features to help them live up to their full potential: Projects Doze, and Project Svelte.
The goals are simple — find ways to make the phone less power hungry when you're not using it, and better management of background processes. All software is built with an emphasis on performance and efficiency, and an operating system so much more so. We'll take a look at the changes and see how they could have an impact.
Project Svelte arrived in 2013 with the release of Android 4.4 KitKat as a way for the OS to perform better on lower-end phones. On that front, it did succeed, but we expected bigger changes than we got. For a good idea of what Svelte's original intentions were, look no further than Android One. The goal was to create inexpensive hardware that runs the latest version of Android well enough to recommend.
With Android 7.0, the project continues to cut down on the performance impact by having an even better system for management of background processes.
Changes to Svelte address two specific and important issues that force apps to run in the background
Android is very different from iOS. Any developer can pay a very small fee and publish an app in Google Play alongside names like Facebook or Samsung. Provided the app has no malicious code, it will go live for everyone to install, and unless it gets reported for inappropriate content or actions it gets to stay (though Google says it does do an automated check of every app before pushing it live). That's a far cry from every app submitted going through a manual approval process, and it means that apps aren't being rejected because they don't follow best development practices. Behavior of some of the current APIs doesn't help, and even the best apps can wake up and use resources too often due to an errant process.
Improvements to Svelte in Android Nougat fix two glaring issues:
- Apps check to see if the network changes using what's called a broadcast receiver. When a change happens, every app listening for the change through the default method wakes up at one time and tries to process the data about the change.Think of how your phone acts when it's first started and everything tries to happen at once, and you have an idea of why this needs some sort of improvement. When targeted towards Android 7.0, apps can only listen for network changes through the main thread (what runs when the app is awake and you're using it) so they aren't waking up every time you switch networks. This will use less RAM and CPU time, which means our phones will perform better and use less power.
- In previous versions of Android, apps were able to listen on a similar broadcast receiver for a picture or video to be taken. When that happened, every application that was listening woke up and tried to process the data at once. As above, that isn't very good on the performance front. In Android 7.0, the new picture and new video broadcasts can't be sent. That means even if developers don't update existing apps, they'll never be told to wake up when a picture or video is taken.
For apps to do many of the things we want them to do, they have to stay alive. Slimming down the things they do while they're quietly waiting to become active once again by eliminating unnecessary functions means fewer apps will be running instead of sleeping when they are sent to the background.
The way things work now, you either love Doze or you don't see Doze doing anything noticeable on your phone. That's because of the way it works.
When Doze debuted in Android 6.0, its intent was to defer CPU and network activity while your phone's screen was off, unplugged, and motionless. If all three of the criteria were not met, Doze would not kick in and apps would continue to run as normal. This worked great while in the office and at your desk, but as soon as it went into your pocket Doze stopped doing anything and the benefits ceased.
A two-stage Doze lets your phone use less battery while you're up and moving, too
The behavior change in Android Nougat is simple. Doze now has two stages: one is when the screen is off and the phone is unplugged, and the other is when the phone is also motionless.
When your phone is running on just the battery and the screen has been off for a set amount of time, applications will stop directly accessing the network, and activities like syncing and other jobs are deferred until a predefined amount of time passes. Then, a short maintenance window allows them to perform normal background functions. This part works while your phone is in your pocket or subject to other forms of motion.
When the phone has also been still for a set amount of time, all the Doze restrictions — additional things like apps waking in the background or listening for what's called an alarm (not the kind that wakes you in the morning, those are unaffected) or looking for the current location — are applied on top of the network and jobs deferrals. The maintenance window still regularly appears, but between those windows your phone is barely alive and not doing much until you pick it up.
We know how well Doze works (when it hasn't been modified by the people who built your phone) while the phone is still. Now we'll also see a benefit when we're up and moving, too.
Will the changes to Svelte and Doze fix every performance and battery issue? The answer, of course, is no. But these changes are logical steps that address two very specific things that needed addressed. the result will prove to be better than what we have now, even if it can't solve everything.