系统时钟更改时是否会引发事件?

时间:2019-05-15 02:17:44

标签: datetime xamarin event-listener

使用DateTime。现在我可以获取当前时间。通过以秒或毫秒为间隔不断检查DateTime.Now,可以使用计时器获取更新时间。因此,我可以制作标签并模拟实时时钟。我知道了

但是,有没有一种方法可以在分钟或小时改变时捕获事件,而不必使用计时器并每隔x秒获取当前时间?那么,当分钟更改时,DateTime或其他属性引发了一个事件吗?

还是使用计时器并每秒检查一次,这是使用DateTime.Now找出分钟变化的唯一方法吗?

1 个答案:

答案 0 :(得分:0)

您需要使用平台相关的代码(即通过依赖项服务来设置回调事件会很好地工作)。

在Android上,您可以为BroadcastReceiver(如果需要,还可以Intent.ActionTimeChanged)注册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");
});