sud*_*ran 4 android alarmmanager xamarin repeatingalarm
使用 Xamarin Droid,我创建了一个警报应用程序。为特定时间设置闹钟效果很好。当我尝试在特定时间间隔内重复闹钟时,它无法在特定时间闹钟。即使应用程序处于睡眠状态,应用程序也需要发出警报。下面的代码是我在 Xamarin Droid 项目中尝试用于设置和重复警报的。请指导我以正确的方式实现重复警报的解决方案!
设置特定时间的闹钟:
manager.Set(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime() + 60 * 1000 * int.Parse(notifytime), pendingIntent);
Run Code Online (Sandbox Code Playgroud)
我的需要是从闹钟响起每 15 分钟重复一次闹钟。
manager.SetRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime()+10, AlarmManager.IntervalFifteenMinutes, pendingIntent);
Run Code Online (Sandbox Code Playgroud)
提前致谢。
当设备处于睡眠状态时,为了使闹钟能够在 Android 上的正确时间可靠地触发操作,必须实现几个部分,并且它们都涉及在运行目标 PendingIntent 时保持唤醒锁。我假设您的 PendingIntent 指的是 aBroadcastReceiver或 aService而不是 an,Activity因为在计时器上运行“活动”通常没有用。如果 PendingIntent 的目标没有持有唤醒锁,则无法保证在调用警报时该操作实际上会发生。这个非常古老的线程讨论了使用 AlarmManager 唤醒设备缺乏保证。
解决方案是确保 PendingIntent 的目标所做的第一件事是在设备上保持唤醒锁定。您必须做的第一件事是允许您的应用程序持有唤醒锁的权限。这是通过将以下权限添加到 AndroidManifest.xml 文件来完成的。
<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)
值得庆幸的是,@jon-douglas 编写的一些 Xamarin 示例代码在这里演示了这一点。虽然这可能会给您带来您想要的结果,但最佳实践似乎不是直接调用 a Service,而是使用WakefulBroadcastReceiver为您启动服务的中介。WakefulBroadcastReceiver 的Android 文档中有一个如何执行此操作的示例。
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |