如何为Xamarin.Android AlarmManager设置准确的时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为Xamarin.Android AlarmManager设置准确的时间相关的知识,希望对你有一定的参考价值。

我在Xamarin.android应用程序中的特定时间设置本地通知。一切正常,但设定时间似乎很少,设定时间来自用户输入(精确度很高)。在将来(几天后)进一步设置通知时,通知会在下一分钟触发,而不是应该具有的通知。

下面是我目前计算时间的代码。 calendarEvent.StartTime是DateTime属性。

TimeSpan span = calendarEvent.StartTime - DateTime.Now;
manager.Set(AlarmType.ElapsedRealtime,(long)(SystemClock.ElapsedRealtime() + span.TotalMilliseconds),pendingIntent);     

我想知道如何准确计算时间,以便通知在他们应该的开始时点火。在当前的代码中,它们会在分钟中或之后触发。

答案

如果您确实需要精度,请尝试使用警报管理器类的SetExact()方法。

TimeSpan span = calendarEvent.StartTime - DateTime.Now;
manager.SetExact(AlarmType.ElapsedRealtime,(long)(SystemClock.ElapsedRealtime() + span.TotalMilliseconds),pendingIntent);

我不知道它是否相关,但是如果您使用日历事件可能应该使用RTC,因为AlarmType.RTC基于时钟,而AlarmType.ElapsedRealTime基于自设备以来经过的时间打开。

以上是关于如何为Xamarin.Android AlarmManager设置准确的时间的主要内容,如果未能解决你的问题,请参考以下文章

使用 tabhost 中的每个选项卡设置 axml 布局:Xamarin Android

大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session

Xamarin Android 打造属于自己的博客园APP

用Xamarin.Android配合vs2010开发安卓程序如何连接到实体机?

MvvmCross Android UI 组件

Xamarin.Form与Xamarin.Android或Xamarin.IOS的区别简述