【问题标题】:How inexact is setInexactRepeating() for AlarmManager?AlarmManager 的 setInexactRepeating() 有多不精确?
【发布时间】:2016-02-10 10:30:52
【问题描述】:

所以这就是交易...当他们上课时,我必须让用户的电话静音。所以我需要一个闹钟在每天的特定时间为每节课响起。

所以我认为每个班级都有自己的闹钟(间隔设置为一天)。如果今天上课,电话会静音。

这是我当前的代码:

am.setInexactRepeating(AlarmManager.RTC_WAKEUP, startTime, 
                       DAY_IN_MILLISECONDS, start);

setInexactRepeating() 是否足够准确,可以在一天的几分钟内让手机静音?

【问题讨论】:

  • 请注意,上面的区间参数需要是来自AlarmManager.INTERVAL_*的常量之一。
  • @Jeffrey:不完全正确。从文档“警报的后续重复之间的间隔以毫秒为单位。如果这是 INTERVAL_FIFTEEN_MINUTES、INTERVAL_HALF_HOUR、INTERVAL_HOUR、INTERVAL_HALF_DAY 或 INTERVAL_DAY 之一,则警报将与其他警报相位对齐以减少唤醒次数。否则,警报将被设置为好像应用程序调用了 setRepeating(int, long, long, PendingIntent)"
  • @pmont 好的,但如果你这样做了,你的代码可能没有达到你的预期。
  • 我在这里添加了一个更准确的答案:stackoverflow.com/a/35305783/5550618

标签: android


【解决方案1】:

可能不会,尤其是间隔一整天。

来自documentation

您的闹钟的第一次触发不会在请求的时间之前,但它可能不会在该时间之后的几乎整个间隔内触发。此外,虽然重复警报的整个周期将按要求进行,但警报的任意两次连续触发之间的时间可能会有所不同。如果您的应用程序需要非常低的抖动,请改用 setRepeating(int, long, long, PendingIntent)。

【讨论】:

  • 哦,那可不好。但是 setRepeating() 对电池的影响有多大?
  • 对于超过一小时的时间段,应该可以忽略不计。
  • @rmmh 您将最后一个论点基于的任何文档?
  • 我没有直接链接,但设备可以在等待警报触发时休眠。如果您在一小段时间内每小时醒来一次,则该应用的整体唤醒百分比非常小。
  • 从 API 19 开始,所有重复的警报都是不准确的。
猜你喜欢
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多