0

我正在创建具有工作日选项的小型警报项目。(我正在使用警报管理器)。

警报在给定的时间和日期完美触发,但问题是如果我将日期或时间更改为给定的警报时间,它也会触发任何先前的警报。

例如。

如果闹钟设置为周一 周三 周五 5:00 AM。- 当前时间是周日下午 6:00。

另一个闹钟设置为周一周三周五下午 4:00 - 当前时间是周日下午 6:30。

为了进行测试,我将日期更改为星期二下午 6:00 - 两个警报立即针对星期一的日程一一触发。

如何停止此特定警报并仅在下周一而不是立即触发?我还需要检查日期吗???

让我知道!

4

2 回答 2

0

你真的不能。警报管理器以系统时间为基础。如果您手动更改系统时间,它将就像从现在到您设置它的所有时间已经过去一样。

编辑:您可以找到股票警报应用程序的源代码。这是一个链接到其中一个相关对象 Alarms

我没有对其进行任何测试以确保,但据我所知,他们正在存储事件应该触发的时间,如果它突然发现它是过去的,它会忽略警报而不是让它触发。要检查的其他一些相关类是 SetAlarm 和 AlarmClock,如果您想按照它们设置的方式对股票应用程序中的警报做出反应,请在 grepcode 上搜索它们。

但仍然需要指出的是,手动更改系统时间仍然可以用来操作警报。例如,如果您将闹钟设置为明天晚上 10:00,然后手动将时间跳到明天晚上 9:59。警报将在 1 分钟后触发。

于 2012-11-22T02:35:56.467 回答
0

比较你的闹钟时间System.currentTimeMillis()

如果您的闹钟时间小于当前时间,则无需设置闹钟

于 2015-09-08T17:30:39.863 回答