Android 谷歌安卓上的警报

Android 谷歌安卓上的警报,android,alarm,Android,Alarm,我注意到Android上的闹钟有一个奇怪的现象——它们并不总是以正确的时间间隔唤醒设备。例如,如果我设置了一个警报,每5分钟启动一次服务(使用RTC_WAKEUP或类似工具),那么在设备进入睡眠状态之前,一切都会正常工作——之后,警报可能会在几分钟内或近一小时内不会触发。它通常最终会启动——如果我按Menu唤醒设备,它总是会启动。使用重复报警(而不是每次重新设置)具有相同的效果 所以我的问题是,当设备处于睡眠状态时,是否保证警报会在适当的时间间隔触发?我知道我不应该期望毫秒或秒的精度,而是几十分

我注意到Android上的闹钟有一个奇怪的现象——它们并不总是以正确的时间间隔唤醒设备。例如,如果我设置了一个警报,每5分钟启动一次服务(使用RTC_WAKEUP或类似工具),那么在设备进入睡眠状态之前,一切都会正常工作——之后,警报可能会在几分钟内或近一小时内不会触发。它通常最终会启动——如果我按Menu唤醒设备,它总是会启动。使用重复报警(而不是每次重新设置)具有相同的效果


所以我的问题是,当设备处于睡眠状态时,是否保证警报会在适当的时间间隔触发?我知道我不应该期望毫秒或秒的精度,而是几十分钟?

我从来没有在Android上编程过,但我有点无聊,所以我在谷歌上搜索了一下,发现了这一点,这似乎非常相关:(你需要登录你的谷歌帐户才能阅读)

我又看了一眼经理 文档,我注意到 只谈论使用警报来 广播事件,而不是启动服务。 我改变了周围的情况,使用了 广播接收机,而不是 获取其onReceive()中的锁 并将锁引用存储为 另一个类的静态成员, 以 AlarmClock应用程序:

这似乎奏效了。我猜 发生的事情是我的服务 正在启动警报,但是 这个装置有时会回到原来的状态 在我醒来之前先睡觉 锁显然这是唯一的保证 这是在收到警报时发出的 onReceive将运行到 完成

我只是想我会把这个贴出来以防万一 任何人都在寻找同样的东西 问题

你还应该看看:

此外,当设备处于休眠状态时,您的程序已经调用了OnPause(),因此此时只有服务在运行。这意味着,除非您的广播接收器被设置为具有唤醒锁定(如文档中所示),否则原始服务调用将无法保持设备的唤醒状态