The short answer
On Android, a third-party alarm that does not fire is usually being killed by manufacturer battery optimisation. Set the app to Unrestricted battery usage, enable Autostart where the manufacturer offers it, and grant the Alarms & reminders permission.
The universal fixes
- 1Settings → Apps → your alarm app → Battery → set to Unrestricted.
- 2Settings → Apps → Special app access → Alarms & reminders → allow your alarm app. Recent Android versions require this for exact alarms.
- 3Check the Alarm volume stream specifically by pressing a volume key and expanding the sliders.
- 4Confirm the app is not in any "sleeping" or "restricted" list your manufacturer maintains.
Manufacturer-specific settings
- Samsung: Settings → Battery and device care → Background usage limits. Remove the app from Sleeping apps and Deep sleeping apps. Also disable Adaptive battery if alarms fail intermittently.
- Xiaomi, Redmi and POCO: Settings → Apps → Manage apps → your app → enable Autostart, and set Battery saver to No restrictions. Also lock the app in the recents view so the task killer skips it.
- OnePlus and Oppo: Settings → Battery → Battery optimisation → set the app to Don’t optimise, and disable Deep optimisation and Sleep standby optimisation.
- Huawei: Settings → Battery → App launch → set the app to Manage manually and enable all three toggles.
What a well-built alarm app does instead
All of the above is a workaround for apps that keep their schedule inside their own process. An app that registers alarms with the system alarm manager and posts a foreground service when ringing does not depend on staying alive in the background, which removes most of this class of failure.
That is how Roosta is built on Android. The settings above are still worth applying — manufacturer skins are unpredictable — but they should not be the difference between waking up and not.