Android 应用程序睡眠时Xamarin AlarmManager未启动

Android 应用程序睡眠时Xamarin AlarmManager未启动,android,xamarin,xamarin.android,alarmmanager,Android,Xamarin,Xamarin.android,Alarmmanager,我有以下代码在准确的时间发出警报当我的应用程序进入睡眠/后台时,闹钟不会触发,但只要我解锁手机,它就会立即触发 Intent i = new Intent(this, typeof(MyReceiver)); i.PutExtra("Speaker", txtSpeaker.Text); PendingIntent pi = PendingIntent.GetBroadcast(this, 0, i, 0); string _date = D

我有以下代码在准确的时间发出警报当我的应用程序进入睡眠/后台时,闹钟不会触发,但只要我解锁手机,它就会立即触发

    Intent i = new Intent(this, typeof(MyReceiver));
    i.PutExtra("Speaker", txtSpeaker.Text);
    PendingIntent pi = PendingIntent.GetBroadcast(this, 0, i, 0);

    string _date = DateTime.Today.ToString("MM-dd-yyyy")  ;
    string _time = tpick.Hour + ":" + tpick.Minute;
    DateTime scheduleAt = Convert.ToDateTime(_date).Add(TimeSpan.Parse(_time));
    DateTimeOffset dateOffsetValue = DateTimeOffset.Parse(scheduleAt.ToString());
    var millisec = dateOffsetValue.ToUnixTimeMilliseconds();

    AlarmManager alarmManager = (AlarmManager)GetSystemService(AlarmService);
    alarmManager.SetExact(AlarmType.RtcWakeup, millisec, pi);
这是我的接受者课程

[BroadcastReceiver]
public class MyReceiver : BroadcastReceiver
{
    public async override void OnReceive(Context context, Intent intent)
    {


        Console.WriteLine("FIRED");

        String result = intent.Extras.GetString("Speaker");

        Toast.MakeText(context, "Alarm Ringing!", ToastLength.Short).Show();

    }
}

如果应用程序在API 23或更高版本上运行,您可能需要考虑使用。根据文档,在我看来,此方法将忽略设备是否处于低功耗状态或是否启用了doze。

如果应用程序在API 23或更高版本上运行,您可能需要考虑使用。根据文档,在我看来,此方法将忽略设备是否处于低功耗状态或是否启用了doze