我们可以从后台的精确定时器接收器启动前台服务吗?

4
在“无法从后台启动前台服务”限制的例外之一中,文档提到:
您的应用程序调用准确的警报以完成用户请求的操作。
这是不是意味着下面的使用场景可以工作?
  1. 使用 AlarmManager.setAlarmClock 安排一个准确的闹钟,在时间 A 触发。该闹钟携带一个 pendingIntent,它将目标定位到已注册的广播接收器。
  2. 时间 A 到达时,接收器获取 intent。
  3. 在接收器的 OnCreate 方法中,我们尝试startForegroundService,这涉及显示粘性通知并使用 MediaPlayer 播放自定义音乐。
1个回答

4
我已经实施并测试了这个功能,看起来它是有效的,因此我认为这是一个合理的使用情况。

1
你能分享一个例子吗?即使我按照你在问题中提出的要求进行操作,我仍然经常遇到崩溃的情况。 - theimpulson
2
@theimpulson 我无法在此处粘贴所有代码(我正在使用Xamarin)。但是有一些要检查的事项:1)您已在清单中声明了“SCHEDULE_EXACT_ALARM”和“FOREGROUND_SERVICE”权限。2)您已注册了闹钟触发广播接收器。3)您已注册了前台服务。4)在前台服务的“onStartCommand”中,您必须尽快调用“startForeground”以显示通知,然后执行其他任务。如果您仍然遇到问题,可以在此处粘贴您的确切错误/异常和代码,也许我们可以看一下。 - thankyoussd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接