Android什么时候播出ACTION_DATE_CHANGED?
When does Android broadcast ACTION_DATE_CHANGED?
我正在设计一个闹钟应用程序,我需要收听两个系统广播:Intent.ACTION_TIME_CHANGED
and Intent.ACTION_DATE_CHANGED
。
我相信 ACTION_TIME_CHANGED
是在用户手动更改时间时触发的。但是ACTION_DATE_CHANGED
什么时候播出?
此操作的文档不太令人信服。它说,
The date has changed.
谁更改了日期?用户,通过更改日期设置?还是时钟滴答到第二天?
我找到的两个 Stack Overflow 答案:
- Answer 1: 时钟滴答到第二天时触发广播。
- Answer 2: 当用户手动更改日期时触发广播,系统不会自动触发。
这两个答案表明了完全不同的行为。如果答案 #1 是正确的,我将使用上下文注册接收器收听此广播。如果答案 #2 是正确的,我需要为 Intent.ACTION_TIME_TICK
注册一个上下文注册的接收器,然后手动检查我们是在第二天还是同一天。
根据@Nicolas 的建议,我测试了两个广播。结果:
ACTION_TIME_CHANGED
仅在用户手动更改日期、时间或时间格式(从 12 小时格式到 24 小时格式或 vice-versa)时广播。
ACTION_DATE_CHANGED
仅在日期更改时广播,即当我们从 11:59 下午转到第二天 12:00 上午时。这是系统自动触发的。
我正在设计一个闹钟应用程序,我需要收听两个系统广播:Intent.ACTION_TIME_CHANGED
and Intent.ACTION_DATE_CHANGED
。
我相信 ACTION_TIME_CHANGED
是在用户手动更改时间时触发的。但是ACTION_DATE_CHANGED
什么时候播出?
此操作的文档不太令人信服。它说,
The date has changed.
谁更改了日期?用户,通过更改日期设置?还是时钟滴答到第二天?
我找到的两个 Stack Overflow 答案:
- Answer 1: 时钟滴答到第二天时触发广播。
- Answer 2: 当用户手动更改日期时触发广播,系统不会自动触发。
这两个答案表明了完全不同的行为。如果答案 #1 是正确的,我将使用上下文注册接收器收听此广播。如果答案 #2 是正确的,我需要为 Intent.ACTION_TIME_TICK
注册一个上下文注册的接收器,然后手动检查我们是在第二天还是同一天。
根据@Nicolas 的建议,我测试了两个广播。结果:
ACTION_TIME_CHANGED
仅在用户手动更改日期、时间或时间格式(从 12 小时格式到 24 小时格式或 vice-versa)时广播。ACTION_DATE_CHANGED
仅在日期更改时广播,即当我们从 11:59 下午转到第二天 12:00 上午时。这是系统自动触发的。