StupendousShishKabob

joined 6 months ago
[–] [email protected] 5 points 6 months ago

For the record, I monitor systems like fire suppression for data centers and hospitals, respond to calls from cancer treatment centers for patient-impacting issues, and I do financial trading and some other time-sensitive stuff. I have very good justifications to want my notifications to come in immediately and without any delay, battery life be damned.

[–] [email protected] 7 points 6 months ago (1 children)

That's fine for some people, and I support your right to configure your phone the way you want to. If you want more battery life and are okay with delayed notifications, then this feature is for you. Good for you.

It's unfortunate you don't believe other people have the same right to have control over their devices. That's why you are morally in the wrong. Now sit down.

[–] [email protected] 3 points 6 months ago (1 children)

You are very confused. Not similar or related to in any way shape or form.

[–] [email protected] 2 points 6 months ago

Stupid me thought it was the “optimised” per-app battery setting vs “unrestricted” that would control this.

That controls Doze, which can also potentially delay notifications.

The Freezer works entirely separate and in addition to Doze. You would need to disable both.

The nice thing about Doze these days is that you can whitelist individual apps rather than turning the whole thing off. That's what setting the battery to "not optimized"/"unrestricted" does under the hood.

 

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