【问题标题】:Xamarin AlarmManager not firing when app sleeps应用程序休眠时 Xamarin AlarmManager 未触发
【发布时间】:2020-11-02 03:05:30
【问题描述】:

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

    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();

    }
}

【问题讨论】:

    标签: android xamarin xamarin.android alarmmanager


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多