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

时间:2019-02-18 12:21:14

标签: datetime xamarin.android alarmmanager timespan

我正在Xamarin.Android应用程序中设置本地通知在特定时间触发。一切正常,但设置时间似乎很少,设置时间来自用户输入(精确到分钟)。如果将来(几天后)再设置通知,则通知将在第二分钟触发,超出预期。

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

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

我想知道如何准确地计算时间,以便通知在应有的分钟开始时触发。在当前代码中,它们会在几分钟或更晚的时间内触发。

1 个答案:

答案 0 :(得分:0)

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

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

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