While I understand somehow your try to force any answer from FP its going off topic and its repetition in circles
what FP said somewhere else
While I understand somehow your try to force any answer from FP its going off topic and its repetition in circles
what FP said somewhere else
A quick look back at my first impressions of Android 15 on my Fairphone 4:
I find that performance has deteriorated. Before, I could browse the web with Firefox while listening to music with VLC. Now, if I open an app that uses too many resources, the others get killed without warning.
Similarly, switching between apps has become risky. It’s happened to me several times that the app restarts, causing me to lose track of what I was doing.
Are other people having similar issues?
Hello
it looks like you are describing this issue
For more discussions (also on hopes for the fix), please continue there
I tried to mitigate the issue and it seems I was to some extent successful tweaking the two system-level mechanism below. Here is my debugging session summary:
After updating to Android 15, the Fairphone 4 aggressively kills background apps — even when sufficient RAM is available (~4.5 GB free out of 7.5 GB). Switching between two apps (e.g., browser to OTP authenticator and back) frequently causes the first app to be killed and restarted from scratch. Music players (Spotify, Tidal), password managers (KeePass), and browsers (Firefox, Brave) are particularly affected. Setting apps to “Unrestricted” battery optimization does not help. This is a regression from Android 13 where multitasking worked normally on the same device.
ro.hardware=qcom)Background apps are killed within minutes of switching away, despite ample free memory. This makes basic multitasking unreliable:
This is not a minor inconvenience — it fundamentally breaks Android’s multitasking model. A phone with 7.5 GB RAM should comfortably hold several apps in memory.
Using adb shell dumpsys activity exit-info, the kill reasons were examined for affected apps. Two system-level mechanisms are responsible:
The Low Memory Killer Daemon (LMKD) is killing cached apps even when 4.5 GB of RAM is free. This suggests the LMKD thresholds are tuned far too aggressively for a device with 7.5 GB RAM.
Android’s ActivityManager enforces a cap of 30 empty (cached) processes (CUR_MAX_EMPTY_PROCESSES=30). Event logs show every automated kill is logged as empty #31 — the instant a 31st cached process exists, the oldest is killed. With modern apps spawning multiple processes (WebView sandboxes, work managers, crash helpers), 30 slots fill up quickly.
A critical finding: use_compaction=false in the activity_manager device config. App compaction (introduced in Android 10) compresses cached apps in RAM, significantly reducing their memory footprint. With compaction disabled, cached apps consume far more RAM than necessary, leading to more frequent LMKD kills. This appears to be a Fairphone configuration choice, as AOSP defaults to compaction being enabled.
The setting mCustomizedMaxCachedProcesses=32 shows Fairphone has applied a custom cached process limit lower than the AOSP default. While the effective CUR_MAX_CACHED_PROCESSES was 60, the customization to 32 may affect internal behavior in some code paths.
dumpsys activity exit-info)Over a ~24 hour period (2026-04-07 to 2026-04-08):
| App | LOW_MEMORY kills | TOO_MANY_EMPTY kills | Total system kills |
|---|---|---|---|
| KeePass2Android | 10 | 6 | 16 |
| Spotify | 7 | 1 | 8 (+ additional user-initiated) |
| Firefox | 6 | 4 | 10 |
timestamp=2026-04-08 15:46:11.938 reason=3 (LOW_MEMORY)
timestamp=2026-04-08 15:24:58.846 reason=13 (OTHER KILLS BY SYSTEM) subreason=3 (TOO MANY EMPTY PROCS)
timestamp=2026-04-08 14:35:06.921 reason=3 (LOW_MEMORY)
timestamp=2026-04-08 14:02:39.758 reason=3 (LOW_MEMORY)
Firefox was killed 4 times in under 2 hours, despite ~4.5 GB RAM being free.
timestamp=2026-04-08 10:44:34.114 reason=3 (LOW_MEMORY) rss=156MB
timestamp=2026-04-08 09:01:47.724 reason=3 (LOW_MEMORY) rss=106MB
timestamp=2026-04-08 01:19:11.301 reason=13 (TOO MANY EMPTY PROCS) rss=160MB
timestamp=2026-04-08 01:03:54.747 reason=3 (LOW_MEMORY)
timestamp=2026-04-08 00:44:48.504 reason=3 (LOW_MEMORY)
timestamp=2026-04-07 23:59:15.097 reason=3 (LOW_MEMORY)
timestamp=2026-04-07 23:15:25.613 reason=13 (TOO MANY EMPTY PROCS) rss=72MB
timestamp=2026-04-07 22:59:35.201 reason=13 (TOO MANY EMPTY PROCS)
KeePass — a lightweight app using only 72–160 MB RSS — was killed 8 times in ~12 hours.
logcat -b events)Every automated kill shows the same pattern — process killed as empty #31:
am_kill: [0,22034,org.mozilla.firefox,995,empty #31,188776]
am_kill: [0,21543,com.werner.spotprisen,985,empty #31,76904]
am_kill: [0,22547,com.google.android.apps.messaging,985,empty #31,175556]
am_kill: [0,20520,ch.protonmail.android,985,empty #31,90028]
am_kill: [0,22898,com.textra,905,empty #31,128544]
Note: even system apps like Google Messages and Proton Mail are being killed.
use_compaction=false # App compaction DISABLED
mCustomizedMaxCachedProcesses=32 # Fairphone custom limit (AOSP default is higher)
CUR_MAX_EMPTY_PROCESSES=30 # Hard cap on empty processes
CUR_TRIM_EMPTY_PROCESSES=15 # During memory trim, keep only 15
CUR_TRIM_CACHED_PROCESSES=10 # During memory trim, keep only 10
MemTotal: 7,683,924 kB (~7.5 GB)
MemAvailable: 4,491,668 kB (~4.3 GB free)
4.3 GB of RAM was free while apps were being killed. This strongly indicates the LMKD thresholds are misconfigured.
| Workaround | Result |
|---|---|
| Set apps to “Unrestricted” battery optimization | No effect — kills are from LMKD/process cap, not Doze |
| Allow background usage for affected apps | No effect — same reason |
| Clear app caches | Temporary, apps killed again within minutes |
The following adb commands mitigate the issue, confirming the root cause is in system configuration:
# Enable app compaction (compress cached apps in RAM)
adb shell device_config put activity_manager use_compaction true
# Increase cached process limits
adb shell device_config put activity_manager max_cached_processes 64
# Increase max empty process time
adb shell device_config put activity_manager max_empty_time_millis 7200000000
# Disable app standby bucket enforcement
adb shell settings put global app_standby_enabled 0
# Disable phantom process killing
adb shell settings put global settings_enable_monitor_phantom_procs false
These settings do not persist across reboots and may be overwritten by Google Play Services config sync.
Enable app compaction (use_compaction=true) — This is the single most impactful change. AOSP enables this by default. Fairphone’s decision to disable it causes cached apps to consume significantly more RAM, leading to premature LMKD kills on a device with plenty of memory.
Review LMKD thresholds — The low memory killer is triggering with 4+ GB free RAM. The minfree thresholds should be reviewed for a 7.5 GB device.
Increase or remove mCustomizedMaxCachedProcesses=32 — This Fairphone-specific customization limits cached processes below AOSP defaults. On a device with 7.5 GB RAM, this is unnecessarily restrictive.
Increase CUR_MAX_EMPTY_PROCESSES — The limit of 30 is being hit constantly. Modern apps (especially those using WebView) spawn multiple processes, filling the 30 slots quickly.
adb shell dumpsys activity exit-info <package> to confirm LOW_MEMORY or TOO_MANY_EMPTY_PROCS kill reasonAfter applying the ADB workarounds above:
adb shell dumpsys activity settings | grep -E "use_compaction|CUR_MAX"
Expected output:
use_compaction=true
CUR_MAX_CACHED_PROCESSES=64
CUR_MAX_EMPTY_PROCESSES=32
Then repeat the reproduction steps — apps should remain in memory during normal multitasking.
frameworks/base/services/core/java/com/android/server/am/CachedAppOptimizer.javaI recently (a few hours ago) got an update to FP4.QREL.15.16.1
The patchnotes told me, that the bug with the launcher got fixed. since the update the problems with the restarting launcher are gone.
The issue with the killed background apps is still there… At least FP5 got a working patch, so maybe we’ll get one too soon…
Just upgrade to lineage OS. Fixes the problem - although like all mods, nfc payments will cease to work due to Google not recognising the new OS. However the OS is still secure and receives more regular security patches than the official one.
Hope someone in development reads your message ![]()
The problem is bigger than I thought! Now I keep losing my VPN connection ![]()
Wireguard works steady as rock for me.
VPN (IPSEC) works stable before and after update for me.
I use the DuckDuckGo VPN to block ads. The VPN is set to always be on. It worked at first. But after a while—I couldn’t tell exactly how long—the icon indicating the connection disappears. I have to reopen the DuckDuckGo app to reactivate the VPN. Or I have to turn it off and then turn it back on right away.
Thanks a lot for the investigation. Have you noticed any substantial improvement in the past few days after applying the changes? I might consider doing the same until we get the official fix from Fairphone.
Also, cc @Lidwien , since he may redirect this to the right people.
It’s been a while since I interacted with this thread, despite this still being a very active issue for me.
In any case, I’d like to point the attention of @Fairphone_CM to @ahla’s debugging session (which I’m replying to). I have not, as of yet, personally tested and/or reproduced the method described here, but the potential causes and fixes it mentions do seem to be reliable and promising.
From what I can gather, the issues I (along with many other FP4 users) have can be directly linked to questionable configuration choices that were likely introduced in the A15 update and differ substantially from the AOSP defaults.
I say “questionable” because I want to give the Fairphone team the benefit of the doubt that these changes were made in order to mitigate other potential issues such as battery life, which frankly is something I’m also struggling with but didn’t want to mention on this thread before, as I didn’t see it as directly relevant.
Having said all that, I’d still appreciate if the Fairphone team could take another look at this suggested fix and, if it proves to work, ship it as a hotfix to all FP4 users as soon as possible.
Then you should add @Fairphone_CM to this!
This is a community forum and there is no Fairphone Team reading this,at least not on a regular basis.
You’re absolutely right, apologies. Just tagged them in my post.
So you use an additional app for VPN, not the built-in VPN setting? If so, your problem may have to do with the killing of background-apps problem (see in Help).
This is indeed a third-party VPN app, but battery optimization is disabled for this app.
Also, I didn’t have this issue on Android 13 ![]()
Yes, the issue with killing apps in the background didn’t exist in A13 but was “introduced” by A15. And disabling the battery optimization seems not to work for everyone.
But all details are in a dedicated topic. You might want to look at this particular post that might be the only mitigation for now:
Other than that the issue needs to be fixed by Fairphone. Presumably in the next update.
I’ve applied the fix and have been running it for a few days. The improvement is marginal but noticeable - still apps get killed, just slightly less aggressively.
Some settings from my post don’t actually take effect. For example, use_compaction=true is accepted by device_config, but checking dumpsys activity settings shows:
Total Compactions Performed: 0 some, 0 full
This needs to be set in the codebase as it seems.