【问题标题】:Are there events raised when system clock changes?系统时钟更改时是否会引发事件?
【发布时间】:2019-05-15 02:17:44
【问题描述】:
使用 DateTime.Now 我可以获取当前时间。我可以使用计时器通过以秒或毫秒为间隔连续检查 DateTime.Now 来获取更新时间。所以我可以制作一个标签并模拟一个实时时钟。我明白了。
但是,有没有一种方法可以让我在时钟上的分钟或小时发生变化时捕捉到一个事件,而无需使用计时器并每隔 x 秒获取当前时间?那么,当分钟变化时,是否有由 DateTime 或其他属性引发的事件?
或者是使用计时器并每秒检查一次,这是使用 DateTime.Now 找出分钟何时变化的唯一方法?
【问题讨论】:
标签:
datetime
xamarin
event-listener
【解决方案1】:
您将需要使用平台相关代码(即通过依赖服务设置回调事件会很好地工作)。
在 Android 上,您可以为Intent.ActionTimeChanged 注册一个BroadcastReceiver(如果需要,还可以注册Intent.ActionTimezoneChanged):
[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionTimeChanged })]
public class TimeChanged : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Console.WriteLine("Time change, do something with that knowledge");
}
}
在 iOS 上,您可以注册NSSystemClockDidChange 通知:
NSNotificationCenter.DefaultCenter.AddObserver(new NSString("NSSystemClockDidChangeNotification"), (obj) =>
{
Console.WriteLine("Time change, do something with that knowledge");
});