gpt4 book ai didi

c# - Xamarin Android 警报管理器问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:53 25 4
gpt4 key购买 nike

我的 Xamarin Android 应用程序中有一个 AlarmManager。我正在使用 SetExact() 配置它,时间为 5 分钟。但它仅在五秒钟后就开始了。而且无论我什么时候配置它,它总是会在 5 秒后触发。我在 Java 中使用了完全相同的代码,并且运行良好。

代码:

[BroadcastReceiver]
public class AlarmReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Log.Info("AlarmReceiver", "Triggered");
}

public static void Start(Context context, long triggerAfterMilis)
{
var type = AlarmType.RtcWakeup;
var alarmManager = (AlarmManager) context.GetSystemService(Context.AlarmService);

var timerIntent = PendingIntent.GetBroadcast(context, 0, new Intent(context, typeof(AlarmReceiver)), PendingIntentFlags.CancelCurrent);

alarmManager.Cancel(timerIntent);
if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
alarmManager.SetAndAllowWhileIdle(type, triggerAfterMilis, timerIntent);
else if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
alarmManager.SetExact(type, triggerAfterMilis, timerIntent);
else
alarmManager.Set(type, triggerAfterMilis, timerIntent);
Log.Info("AlarmReceiver", $"Started, tigger after {triggerAfterMilis} miliseconds.");
}
}

我如何使用 AlarmReceiver:

AlarmReceiver.Start(Activity,(long)TimeSpan.FromMinutes(10).TotalMilliseconds)

输出窗口:

14:14:20.217 5393-5393/AlarmReceiver: Started, tigger after 600000 miliseconds. 14:14:25.218 5393-5393/AlarmReceiver: Triggered

最佳答案

你设置的是过去触发闹钟的时间,只使用10分钟的时间跨度,需要从1970年开始计算毫秒数。

If the stated trigger time is in the past, the alarm will be triggered immediately.

获取当前时间,并向其添加时间。

var TenMinsFromNow = Calendar.GetInstance(Android.Icu.Util.TimeZone.Default).TimeInMillis + TimeSpan.FromMinutes(10).TotalMilliseconds);

从“1970-01-01T00:00:00Z”开始的以毫秒为单位的当前时间:

 Java.Lang.JavaSystem.CurrentTimeMillis();

或者:

 Calendar.GetInstance(Android.Icu.Util.TimeZone.Default).TimeInMillis;

关于c# - Xamarin Android 警报管理器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41064108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com