C# 使用计时器更新前台服务通知,该计时器即使在设备处于打盹/睡眠模式下也能工作

C# 使用计时器更新前台服务通知,该计时器即使在设备处于打盹/睡眠模式下也能工作,c#,android,xamarin,xamarin.android,foreground-service,C#,Android,Xamarin,Xamarin.android,Foreground Service,我有一个计时器(System.Timers),它被包装到一个对象中,该对象公开两个事件。一个每秒发射一次,一个每7分钟发射一次。每秒触发的事件是使用倒计时更新前台服务通知。每7分钟触发一次的事件是更新一个int值,该值显示在前台通知的进度条中 关键是我希望int值达到150。因此,我倒计时在StartForeground()时给出的值达到150(每7分钟增加1)需要多长时间,并在前台通知中显示剩余时间的进度(每秒更新一次) 这一切都很好。。。直到我锁定屏幕,手机大概进入“打盹”或睡眠模式。这会停

我有一个计时器(System.Timers),它被包装到一个对象中,该对象公开两个事件。一个每秒发射一次,一个每7分钟发射一次。每秒触发的事件是使用倒计时更新前台服务通知。每7分钟触发一次的事件是更新一个int值,该值显示在前台通知的进度条中

关键是我希望int值达到150。因此,我倒计时在StartForeground()时给出的值达到150(每7分钟增加1)需要多长时间,并在前台通知中显示剩余时间的进度(每秒更新一次)

这一切都很好。。。直到我锁定屏幕,手机大概进入“打盹”或睡眠模式。这会停止我的计时器或停止服务,不确定


问题:即使设备处于锁定/睡眠/打盹状态,我如何使其继续工作。我使用的是xamarin android而不是表单。

尝试将应用程序添加到白名单中

您可以使用
PowerManager.isignoringbatteryooptimizations
检查此应用程序是否在系统的白名单中

如果没有,您可以通过将
REQUEST\u IGNORE\u BATTERY\u OPTIMIZATIONS
权限添加到
Androidmanifest.xml
中,并发送
ACTION\u IGNORE\u BATTERY\u OPTIMIZATION\u设置的
Intent
来申请权限

例如:

PowerManager powerManager = (PowerManager)GetSystemService(Context.PowerService);
if (!powerManager.IsIgnoringBatteryOptimizations(PackageName))
   {
      Intent intent = new Intent(Settings.ActionIgnoreBatteryOptimizationSettings);
      StartActivity(intent);
   } 

您可以使用唤醒锁。(你的前景服务中的计时器代码也是吗?)它能工作吗?@SushiHangover谢谢你,你建议使用唤醒锁才有效!如果你把它作为答案写下来,我会记下来的。