首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android 12 -前台服务启动限制

Android 12 -前台服务启动限制
EN

Stack Overflow用户
提问于 2021-09-17 12:04:21
回答 3查看 13.1K关注 0票数 19

我正在开发一个需要后台startForeground服务的SDK。因为它使用背景定位和蓝牙相关的工作。如果应用程序被杀死,监视将在后台执行。所以我才用前台服务。有一个条件从后台启动前台服务。

目前,我的SDK使用服务来处理这项工作。但Android12on-word不支持从后台启动服务。

我试图从下面的异常抛出的背景开始服务。

代码语言:javascript
运行
复制
ForegroundServiceStartNotAllowedException: Service.startForeground() not allowed due to mAllowStartForeground false

如何使用WorkManager解决此问题,所有处理都是由服务类完成的,以及如何将服务对象传递给工人类并在Worker类中启动此作业。

事实上,我的项目是基于信标技术。信标信号用于向用户显示不同的建议。

在我当前的实现中,如果应用程序被用户杀死,并且还接受前台服务,则SDK将在后台运行。并探测到信标并提供适当的行动。

我的实现是,如果应用程序用前台服务"OFF“初始化我的SDK,那么稍后当应用程序处于后台并试图从后台启动前台服务时,这个异常将抛出。前台服务相关的决策由服务器端API保存。我定期检查服务器端值是否被更改,如果值被更改,更改的操作将反映在SDK中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-09-18 16:28:53

世界上没有人能给你答案。所有这些限制的想法是,作为开发人员,我们需要优化应用程序。所以,如果这对你来说是不可能的,那就意味着你很可能需要优化你的工作方式。要做到这一点,您需要提供更多的信息,具体您正在接收的事件,什么是您的用例,等等。

https://developer.android.com/about/versions/12/foreground-services#cases-fgs-background-starts-allowed

如您所见,有关于以下异常的信息:

您的应用程序接收需要BLUETOOTH_CONNECT或BLUETOOTH_SCAN权限的蓝牙广播。

但是在您的问题中并没有说您的用例可能与此相关。

另外,我不明白这个应用程序是如何被杀死的,但是你一直在后台工作。

另外,如果你想要不断地做一些事情,为什么会有一个事件,当你在后台。就在用户打开应用程序的时候--启动服务并继续运行。

你也可以“黑”它,让用户把你从电池优化中移除。

案例

票数 4
EN

Stack Overflow用户

发布于 2022-05-05 17:51:12

早些时候,我们使用Service运行后台任务。但是,由于Android 12 - Foreground service launch restrictions,我们将无法调用Service来执行安卓12+的后台任务。

因此,从现在开始,从targetSdk 31开始,只有在应用程序处于前台时才能调用Service。当应用程序关闭或应用程序转到后台时,使用Service调用startForegroundService将导致ForegroundServiceStartNotAllowedException

因此,要执行后台任务,我们需要使用Worker而不是Service。请参考这个回答来了解它是如何实现的。希望能帮上忙。另外,请参考下面的链接,以获得需要进行哪些更改的高级概述。

  1. Android 12行为改变
  2. 工作要求
票数 3
EN

Stack Overflow用户

发布于 2021-11-05 22:09:08

根据官方的文档,如果你的应用程序做了以下之一,它应该能够启动一个FGS:

您的应用程序接收需要BLUETOOTH_CONNECT或BLUETOOTH_SCAN权限的蓝牙广播。

您的应用程序接收到与地理位置或活动识别转换相关的事件。

这两个人似乎是你用例的很好的候选者,至少我是怎么理解的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69223128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档