PSA: I am posting this root cause analysis to document a severe logic flaw in WhatsApp's handling of Android's WorkManager and SystemJobService background tasks. While I am open to advanced ADB workarounds, I am primarily sharing these JobScheduler dumps and battery metrics for community awareness and developer visibility, as standard tier-1 tech support (clearing cache, reinstalling) cannot fix this persisted loop.

Device: Samsung S25 FE

OneUI 8.5 - August Security Patch

There is a severe logic bug in WhatsApp's background task handling on the current One UI build. Leaving background data enabled triggers an infinite retry loop inside androidx.work.impl.background.systemjob.SystemJobService, locking the CPU and causing massive battery drain and thermal throttling. The device overheats while completely idle.

Using Device Care and Battery Historian, WhatsApp consistently shows absurd metrics for a single morning of idle time: over 14h 26m of background execution time, 3h 22m of Wakelocks, 2h 6m of active CPU time, and 200,907 mobile data packets transferred in the background.

By analyzing the Android JobScheduler dump via ADB (adb shell dumpsys jobscheduler com.whatsapp), I was able to pinpoint the cause: the system is trying to execute a persisted periodic contact sync job, failing internally, and immediately retrying.

The following job parameters and constraints repeat constantly in the dumpsys output:

JobInfo:

Service: android/com.android.server.content.SyncJobService

PERIODIC: interval=+1h0m0s0ms flex=+5m0s0ms

PERSISTED

Priority: 300 [DEFAULT]

...

Required constraints: STORAGE_NOT_LOW TIMING_DELAY DEADLINE CONNECTIVITY FLEXIBILITY UID_NOT_RESTRICTED [0xd0300008]

...

Unsatisfied constraints: TIMING_DELAY DEADLINE [0xc0000000]

After digging deeper into how Android's WorkManager and SyncJobService handle this (@SyncManager@com.android.contacts/com.whatsapp:android), it is clear this is an issue rooted in how WhatsApp handles internal exceptions during background syncs.

Because the job is flagged as PERSISTED, it writes itself to the androidx.work.workdb SQLite database. This means the corrupted job queue survives device reboots and app force-closes.

The fatal flaw is in the higher-level exception handling between WhatsApp and Android's WorkManager. When the sync job fails internally, WhatsApp returns a Result.retry(). Because the OS detects that the CONNECTIVITY constraint is technically met, it fails to apply standard exponential backoff policies. Instead of delaying the retry, it immediately fires the job again in an unconditional infinite loop, waking the CPU up hundreds of times and keeping the modem active (thus the 200k+ data packets).

submitted by /u/Jabbadava
[link] [comments]