【问题标题】:alarm triggers even after finish time in android即使在android中完成时间后也会触发警报
【发布时间】:2012-11-22 02:20:56
【问题描述】:

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

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

例如。

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

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

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

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

告诉我!

【问题讨论】:

    标签: android alarm


    【解决方案1】:

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

    编辑:您可以找到股票警报应用程序的源代码。这是link to one of the relavent objects Alarms

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

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

    【讨论】:

    • 但是内置警报器不会发生同样的情况。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多