首页 > 解决方案 > Android 何时广播 ACTION_DATE_CHANGED?

问题描述

我正在设计一个闹钟应用程序,我需要收听两个系统广播:Intent.ACTION_TIME_CHANGEDIntent.ACTION_DATE_CHANGED.

我相信ACTION_TIME_CHANGED当用户手动更改时间时会被解雇。但是什么时候ACTION_DATE_CHANGED播出呢?

此操作的文档不太令人信服。它说,

日期已更改。

谁改了日期?用户,通过更改日期设置?还是时钟跳到了第二天?

我发现关于此的两个 Stack Overflow 答案:

这两个答案表明完全不同的行为。如果答案 #1 正确,我将使用上下文注册的接收器收听此广播。如果答案 #2 正确,我需要注册一个上下文注册的接收器Intent.ACTION_TIME_TICK,然后手动检查我们是在第二天还是同一天。

标签: androidandroid-broadcast

解决方案


根据@Nicolas 的建议,我测试了两个广播。结果:

  • ACTION_TIME_CHANGED只有当用户手动更改日期、时间或时间格式(从 12 小时到 24 小时格式,反之亦然)时才会广播。

  • ACTION_DATE_CHANGED仅在日期变化时广播,即当我们从晚上 11:59 到第二天凌晨 12:00 时。这是系统自动触发的。


推荐阅读