setInexactRepeating of AlarmManager 不适用于 Android 12 及更低版本

setInexactRepeating of AlarmManager in not working for Android 12 and below

提问人:Dharmendra Kumar 提问时间:11/14/2023 更新时间:11/14/2023 访问量:42

问:

我要求在每个 1 中将数据同步回 API,为此我使用 AlarmManager 的 SetInexactRepeating 方法。它工作正常,每 1 分钟调用一次该方法,但如果我在 Android 10 或 11 上运行它,那么它不会重复调用。

我也尝试使用SetRpating方法,但它再次不起作用。

这是我正在使用的代码片段

 Intent intent = new Intent(Android.App.Application.Context, typeof(BackgroundTaskReceiver));
 pendingIntent = PendingIntent.GetBroadcast(Android.App.Application.Context, 0, intent, PendingIntentFlags.Immutable);
 alarmManager = (AlarmManager)Android.App.Application.Context.GetSystemService(Context.AlarmService);

 long triggerTime = Java.Lang.JavaSystem.CurrentTimeMillis();
 
     alarmManager.SetInexactRepeating(AlarmType.RtcWakeup, triggerTime, 60000, pendingIntent);

BackgroundTaskReceiver 是我通过继承 BroadcastReceiver 并覆盖它的 OnReceive 方法并执行此 methiod 中的代码创建的类。

在文档中,我读到它也适用于旧版本的 android,但不确定我在这里缺少什么。

Xamarin.Forms Xamarin.Android AlarmManager

评论

0赞 Jessie Zhang -MSFT 11/14/2023
有没有关于这个问题的日志?
0赞 Dharmendra Kumar 11/17/2023
@JessieZhang-MSFT 没有日志传来。我刚刚在清单文件中添加了接收器并开始工作,但仍然有少数装有 Android 10/11 的设备在几分钟后停止工作。
0赞 Jessie Zhang -MSFT 11/20/2023
可以尝试将 AppCenter 的诊断添加到应用。App Center 诊断 SDK 收集有关应用中崩溃和错误的信息,并将其上传到 App Center 门户,供开发团队进行分析。
0赞 Dharmendra Kumar 11/20/2023
是的,@JessieZhang-MSFT。我们正在使用 AppCenter for Crashlytics 和错误报告,并使用 TryCatch 将异常记录到 App Center,但没有跟踪。您是否认为BraodcastReceiver可能会停止接收事件?我们创建了一个类,并从 BroadCastReceiver 继承了它,并重写了 OnReceive 方法。此 OnReceive 方法是否会以任何方式停止
0赞 Jessie Zhang -MSFT 11/22/2023
您的 AlarmManager 是否在服务中运行?

答: 暂无答案