У меня есть AlarmManager
в моем приложении для Android Xamarin. Я настраиваю его, используя SetExact()
со временем 5 минут. Но он запускается только через пять секунд. И независимо от того, в какое время я его настраиваю, он будет всегда срабатывать через 5 секунд. Я использовал тот же самый код на Java, и он отлично работал.Xamarin Android Alarm Manager Issue
Код:
[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 вы идете – Alex