Power management on Android has always been a problem. Though Google has done what it can over the years to improve battery life (successfully, I’d argue), some smartphone manufacturers don’t think it’s enough. Many of them make their own adjustments on top of so-called “stock” Android, and, in a lot of cases, these extra changes outright break things, resulting in issues ranging from delayed notifications, to prematurely killed apps, and even outright breaking behaviors that developers rely on. In fact, the lack of predictability caused by the current laissez-faire power management scheme is such an issue that it recently took the top spot in a developer AMA request thread for Android 11 on reddit. Ultimately, this results in an inconsistent experience for both app-makers and end-users like you and me, and Google needs to put its foot down.
An emergent problem
For a bit of context, back in 2015, Google implemented a feature called Doze with Android 6.0. In essence, it was one of the first times that Android seriously broke the behavior apps could plan around when it came to running in the background, suspending them in a sort of deep sleep mode when the phone was unplugged, stationary, or otherwise not in use. The feature demonstrably improved idle battery life, but apps had to start specifically planning around the effect it would have. Still, it was a single set standard bundled into stock Android that developers could work around with things like Firebase.
Starting in Android 8.0 Oreo, Google further imposed background execution limits that trimmed down the sort of resources available to apps when they aren’t active and in the foreground, and developers that needed to keep their apps or services active in the background had to use an ongoing notification to do it. It was a bit annoying, but in its own way, that was an elegant solution: Developers could keep background functionality, but they had to be more up-front about it, and users were continuously aware of it via that notification.
By themselves, these sorts of changes may have broken certain behaviors developers relied on, but they weren’t really a problem. They were defined, documented, and predictable — developers could modify their apps to plan around these new rules because they knew what to expect.
However, Android as a platform has always allowed manufacturers to make tweaks and on top of the “stock” system, and most of them have taken that opportunity to add their own unique behavioral changes to try to further improve their products’ battery life. Some simply modify a few of Android’s variables to stretch out the time between scheduled wakes, others impose whole “intelligent” systems with machine learning models that dynamically adjust multiple variables in a way that’s ostensibly tuned so that customers won’t notice it. The problem is that even with the best tricks,…