【问题标题】:Efficient way to program repeating alarms on Android, Java在 Android、Java 上编程重复警报的有效方法
【发布时间】:2015-07-31 20:55:13
【问题描述】:

据我所知,有几种不同的方式可以在 Java 中为 Android 设备实现我想要完成的任务,这基本上是完成大多数智能手机中的基本警报功能所做的事情,但批量进行。也就是说,您可以在 7:00 和 7:20 之间放置一组警报,而不是设置 7:00、7:05、7:10、7:15 和 7:20 的警报。我希望它具有三个主要的重复选项:一周中的指定日期、一个月中的指定日期以及不重复的指定日期。我正在尝试自己解决这个问题,但我想看看其他程序员如何解决这个问题。请注意,虽然我在 Java 方面有些经验,但我对 Android 开发的经验并不多。

【问题讨论】:

  • 顺便说一句,这个问题与 Java Timer 类无关(无论如何都不应该在 Android 中使用)所以它不是上述问题的重复。

标签: java android alarm


【解决方案1】:

最有效的方法是只使用AlarmManager安排每个组的下一个警报。

在 API 19+ 中使用 setExact(),在旧版本中使用 set()。如果您希望闹钟在计划的确切时间响起,则需要在针对较新版本时使用setExact()

当闹钟响起时,它会唤醒已注册的BroadcastReceiver,您可以从中安排群组的下一个闹钟(如果有)。

【讨论】:

  • 从未尝试过,官方文档中也没有记录,但您也可以(正如我听说的那样)唤醒服务,而不仅仅是 BroadcastReceiver
  • 当您使用广播接收器时,您的优势在于系统会在您处理 Intent 时创建隐式唤醒锁。如果您想执行长时间运行的操作以响应警报,您应该使用启动 IntentService 的 WakefulBroadcastReceiver。
猜你喜欢
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多