Doze Mode Is Why Your Android Alarm App Sometimes Doesn't Fire

Android's Doze and App Standby battery managers can delay or silently kill background alarm apps that lack the exact-alarm permission or aren't excluded from battery optimization. The fix is a short, fixed list of settings, not a louder alarm.

In this article3 sections

Android’s Doze and App Standby battery managers can delay or kill background alarm apps that haven’t been excluded from battery optimization, or that don’t hold the exact-alarm permission Android has required since version 13. The fix isn’t a louder ringtone. It’s four settings, and they’re different on every manufacturer’s phone.

This isn’t a bug unique to whichever app you’re using. DontSnooze needs the same permissions any alarm app does to fire reliably in the background, which is why new users get walked through this exact list instead of hoping the out-of-the-box settings will work.

Why this happens

Stock Android has run two power-saving tools since Marshmallow: Doze, which defers background activity once a phone sits still and unused, and App Standby, which does the same per app based on recent use. Google built in a way around it, a call named AlarmManager.setExactAndAllowWhileIdle(), so alarms could still fire through Doze. That used to work without anyone asking for it.

Android 12 introduced the SCHEDULE_EXACT_ALARM permission and granted it automatically. Android 13 and 14 flipped that: it’s now denied unless the user turns it on manually, under Settings → Alarms & Reminders. An app that never requests it, or gets denied by accident during setup, has its alarms quietly downgraded to inexact ones, which Doze can then delay by minutes or skip until the phone wakes up on its own.

That’s just the behavior Google ships. Manufacturers add restrictions of their own on top, and those extra restrictions cause most of the “my alarm didn’t go off” reports that stock Pixels rarely produce.

Fix it in this order

  1. Grant the exact-alarm permission directly. Settings → Apps → [your alarm app] → Alarms & reminders → allow it. On some phones this is under Settings → Special app access → Alarms & reminders instead — check both.
  2. Exclude the app from battery optimization. Settings → Apps → [app] → Battery → set to Unrestricted (Pixel/stock Android wording) or Not optimized. This one setting matters more than the rest combined, and it’s the one most people skip.
  3. Check for a manufacturer-added auto-start or app-lock list. This is the step stock Android doesn’t have, and where most failures actually live:
    • Samsung: Settings → Apps → [app] → Battery → Unrestricted, then separately check Device Care → Battery → Background usage limits to make sure the app isn’t in the “Sleeping” or “Deep sleeping” apps list.
    • Xiaomi / MIUI: Settings → Apps → Manage apps → [app] → Battery saver → No restrictions, then Settings → Apps → Permissions → Autostart → toggle the app on. MIUI is widely considered the most aggressive of the major skins at killing background processes.
    • OnePlus / OxygenOS: Settings → Battery → Battery optimization → [app] → Don’t optimize, then Settings → Apps → [app] → Battery usage → Allow background activity.
    • Huawei / EMUI: Settings → Battery → App launch → find the app and switch it from automatic to manual management, then enable all three sub-toggles (auto-launch, secondary launch, run in background).
  4. Confirm the change survived a reboot. Some of these settings quietly reset after an OEM software update. If an alarm fails once, re-check step 3 first.

A community-maintained reference site, Don’t Kill My App, tracks these settings phone-by-phone as manufacturers move them around each OS release — worth a search there if your exact model isn’t listed above. A smartwatch alarm sidesteps this entire category of failure, since it fires from the watch’s own clock rather than depending on the phone’s background permissions at all. For the iPhone side of this same reliability question, the constraint is different: it’s a permission called Critical Alerts that most apps aren’t allowed to hold, not a battery manager. And if an alarm is firing but draining the battery to do it, that’s a separate, narrower problem with its own fix. None of the four steps above will help if the app survives fine in the background but Do Not Disturb’s own scheduled exceptions are still filtering its notifications; that’s a distinct settings problem covered separately, on both platforms.

FAQ

Why does my Android alarm sometimes not go off even when the phone isn’t on silent? Usually the OS has decided the alarm app is a background battery drain and restricted it before the alarm fires, or the app never got the exact-alarm permission it needs on Android 13+.

Is this an alarm app bug or an Android setting? Almost always a setting, and usually a manufacturer-added one on top of stock Android’s Doze and App Standby. Samsung, Xiaomi, OnePlus, and Huawei each ship an additional battery manager stricter than Google’s own.

How do I know if an app has the exact-alarm permission? On Android 13 or newer, check Settings → Apps → [app name] → Alarms & Reminders, or Settings → Special app access → Alarms & reminders for the full list of apps and their status.

Keep reading