Recently I got a new phone and immediately had trouble with my notifications coming in on time. Emails, calendar alerts, even alarms were being delayed up to 15 minutes.
This isn’t the first time I’ve had problems like this. When Doze first came out back in Android 6 around 2017, it caused me a lot of grief, until I figured out how to whitelist apps and disable it. However, none of my well-known fixes and workarounds were effective.
A new sinister menace has arisen. It’s the Cached Apps Freezer, and it must die.
Before I wrote this post, I did a lot of research and found very little information. It’s clear that this feature and it’s negative side effects is not well know to the Android user community. The one exception was the Termux community and it’s dev agnostic-apollo, who had some excellent notes which I link to below.
The Cached Apps Freezer first appeared in Android 11 QPR3. It’s a feature that still seems half baked, like it’s in beta, but it’s being enabled by default on some devices. Notably, all Google Pixel devices have it enabled by default, but I’ve read that some Samsung devices also have it enabled by default.
So what does it do? In basic English, it periodically pauses and unpauses any app that isn’t in the foreground so that it can’t run. The process isn’t killed, but it can’t do anything until it gets unfrozen. If you watch your logcat, you will regularly see ActivityManager messages with the word “freeze” and “frozen”. It’s a power saving feature and you will find a plenty of ignorant users praising how it makes their battery last longer, but you won’t find any mention of the side effect of delaying notifications.
Note that you might have seen the term “frozen” and “freeze” before in relation to Android apps, where the app is still installed but disabled. This is not the same thing and is not related in any way.
If battery life is your primary concern, then feel free to turn this thing on. It definitely works, but don’t expect your notifications to come in right away. They might come in instantly, but most of the time they are going to be delayed up to 15 minutes.
So, what can you do about it if you want it disabled?
Unfortunately this feature has no user-facing control. Google didn’t create any kind of knobs or controls for the end-user. Maybe this is intentional, or maybe it’s just a half-baked feature. Either way, your only option is to disable it completely.
There are two ways to disable it:
Option 1: Enable Developer Options and disable “Suspend execution for cached apps”. You must reboot to apply the change.
Option 2: Run the following command on an adb shell, a terminal, or wherever, and then reboot: “device_config put activity_manager_native_boot use_freezer false”.
Below are a bunch of links with reference info.
https://source.android.com/docs/core/perf/cached-apps-freezer
https://www.xda-developers.com/hidden-changes-android-11-source-code/
https://www.reddit.com/r/termux/comments/13z7cpg/prevent_termux_from_closing/
The opposite, programs that are supposed to stay in the background are being swapped to disk, not staying resident at all.
I imagine if a app properly uses push notifications (with all the privacy problems that entails) then this isn’t a issue, android sees the push, reactivates the app, you see the notification. If your app does work itself, polls, etc, then this will mean you will miss any activity until the app runs again.
Ah. Thank you, that clarifies things; along with a cuppa java.
yeah if anything the problem is everything is a TSR program now. the generous explanation is because they want to offer the best experience possible and implement everything themselves.
… but the real explanation is they want more telemetry data, not just when you are using the app. not just when you’ve recently used it. but no you launched it once we must indefinitely run in the background and install services to launch on startup
Tile would be a poster child for this.
It begs to run constantly and acts pissed when you don’t allow it.
I like grapheneos … I can disable apps so they don’t run it all until I enable them again.
My only complaint is I wish to be able to keep the app icon in the menu when it’s disabled, I just want the app to only run when I manually open it. There’s no reason my hotel booking program needs to run in the background. It can just run at my convenience. It’s just a web page anyway with a wrapper and authentication built into it.
But I do like the icon disappearing for my banking apps, I have to open them in the app list, and enable them, run the baking app, go back to the app list and disable them. But to me that’s worth it, so that I don’t have a banking app in my list of active apps, if I should ever get mugged. I won’t have any indicator I’ve got banking on the phone