简短答案
Roosta 是把闹钟登记给操作系统,而不是在 App 内部排程。这意味着不管 Roosta 有没有在运行,闹钟都会响:强制退出之后会响,重启之后会响,省电功能已经把后台工作挂起的时候也会响。
闹钟 App 为什么会漏掉闹钟
一个闹钟 App 可以把闹钟排在两个地方:自己的进程里,或者操作系统那里。这个差别在界面上完全看不见,却决定了你醒不醒得来。
把排程留在自己进程里的 App——常见的是一个 JavaScript 定时器或者一个后台任务——赌的是那个进程在那个时刻还活着。iOS 和安卓都有权把它挂起或终止,而且都是家常便饭:内存吃紧的时候、App 闲置好几天的时候,或者厂商的省电功能认定它没必要留着的时候。
- App 在最近任务界面被划掉,它的定时器也跟着一起没了。
- 手机在更新之后于夜里重启,而没有任何东西把闹钟重新登记一遍。
- 厂商的电池优化在几天闲置之后,把这个 App 送进了深度休眠。
- 系统在夜里回收内存,那个进程再也没有被恢复。
Roosta 是怎么做的
你一保存闹钟,排程就直接交给了平台的闹钟服务。从那一刻起它归操作系统所有,Roosta 开着、关着还是被终止都无关紧要。在安卓上,闹钟被登记为精确闹钟,响铃界面运行在一个前台服务里;在 iOS 上则使用系统自己的闹钟界面。
有一个值得知道的推论:因为排程活在 App 之外,所以哪怕第二天早上 App 一启动就崩溃,你设好的闹钟依然是设好的。这两种故障是真正互相独立的。
在安卓上还需要你搭把手的地方
交给系统的排程消掉了大部分失效方式,但消不掉厂商定制系统——它们行为难以预料,偶尔还会覆盖平台本身的行为。有两个设置值得一次性确认一下。
- 1设置 → 应用 → Roosta → 耗电管理 → 不受限制。
- 2设置 → 应用 → 特殊应用权限 → 闹钟和提醒 → 允许 Roosta。
我们的帮助中心里有三星、小米、一加和华为各自的具体步骤,这几家都在安卓之上叠了自己的一套进程管理。

