【发布时间】:2017-04-25 03:35:59
【问题描述】:
我的 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:已启动,在 600000 之后触发 毫秒。 14:14:25.218 5393-5393/AlarmReceiver:已触发
【问题讨论】:
-
请分享您的代码
-
@RaymonddelaCroix 你去吧
标签: c# android xamarin xamarin.android alarmmanager