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://discuss.grapheneos.org/d/11574-cached-apps-freezer-breaking-foreground-services-pixel-7pro-qpr2

https://www.reddit.com/r/termux/comments/13z7cpg/prevent_termux_from_closing/

https://github.com/termux/termux-app/issues/2366

https://github.com/agnostic-apollo/Android-Docs/blob/master/en/docs/apps/processes/phantom-cached-and-empty-processes.md

  • @JM9
    link
    English
    2
    edit-2
    7 months ago

    Many methods to trigger running are frequently abused by applications that don’t want to remodel. For example, a lazy developer could set a timer to trigger running an app every five minutes to check email. This is a really bad design because we have to keep the app in memory all the time and able to run which waste the battery. An app shouldn’t check for anything by polling. Rather, the email provider should tell Android to trigger the app to run on your phone whenever an email arrives, even if the app isn’t running! Push. Don’t pull the data. no useless spinning. It runs only when the email arrives and at no other time.

    Thank you for the detailed post. Something still doesn’t compute here because one of the email apps that gets put in the freezer is Google’s own Gmail app. If your explanation is correct, what does it say about the fact that Google can’t convince their own developers to do the right thing. Overall pretty sad state of affairs as far as push notifications on Android go.