在Android和Java上编程重复报警的有效方法

在Android和Java上编程重复报警的有效方法,java,android,alarm,Java,Android,Alarm,据我所知,有几种不同的方式可以用Java为Android设备实现我想要实现的功能,基本上就是实现大多数智能手机的基本报警功能,但都是批量实现的。也就是说,不必在7:00、7:05、7:10、7:15和7:20之间设置闹钟,只需在7:00和7:20之间设置一组闹钟即可。我希望它有三个主要的重复选项:一周中指定的几天,一个月中指定的几天,以及一个不重复的指定日期。我试图自己解决这个问题,不过我想看看其他程序员是如何解决这个问题的。请注意,虽然我对Java有一定的经验,但我对Android开发不是很有

据我所知,有几种不同的方式可以用Java为Android设备实现我想要实现的功能,基本上就是实现大多数智能手机的基本报警功能,但都是批量实现的。也就是说,不必在7:00、7:05、7:10、7:15和7:20之间设置闹钟,只需在7:00和7:20之间设置一组闹钟即可。我希望它有三个主要的重复选项:一周中指定的几天,一个月中指定的几天,以及一个不重复的指定日期。我试图自己解决这个问题,不过我想看看其他程序员是如何解决这个问题的。请注意,虽然我对Java有一定的经验,但我对Android开发不是很有经验。

最有效的方法是只使用调度每个组的下一个警报

在API 19+中使用
setExact()
,在旧版本中使用
set()
。如果您希望在计划的准确时间发出警报,则在针对较新版本时,需要使用
setExact()


当警报响起时,它将唤醒一个已注册的警报,您可以从中安排该组的下一个警报(如果有)。

从未尝试过,而且官方文档中没有记录该警报,但您也可以(如我所知)唤醒一个服务,不仅仅是BroadcastReceiver当您使用BroadcastReceiver时,您有一个优势,即当您处理意图时,系统将创建一个隐式唤醒锁。如果您想执行长时间运行的操作来响应警报,您应该使用WakefulBroadcastReceiver来启动IntentService。顺便说一句,这个问题与Java Timer类无关(无论如何,Android中不应该使用Java Timer类),因此它不是上述问题的重复。