Android12前台服务问题

Android 12中应用在后台无法启动前台服务,除非满足特定条件,如从用户可见状态过渡、接收高优先级消息等。官方推荐使用WorkManager作为前台服务的替代方案,尤其是WorkManager 2.7.0后的setExpedited()方法。同时,介绍了允许后台启动前台服务的场景,包括用户交互、系统广播和特定权限等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

startForegroundService() not allowed due to mAllowStartForeground false

`
最近Google也是推出了Android12,在写项目的时候也是发现了一个适配Android12需要注意的问题
以 Android 12 为目标平台的应用在后台运行时无法再启动前台服务,但一些特殊情况除外。如果应用在后台运行时尝试启动前台服务,并且前台服务不符合任何特殊情况,则系统会抛出 ForegroundServiceStartNotAllowedException

官方也是给了前台服务的推荐替代方案:WorkManager

从 WorkManager 2.7.0 开始,您的应用可以调用 setExpedited() 来声明 Worker 应使用加急作业。这一新 API 在 Android 12 上运行时使用加急作业,该 API 在早期 Android 版本中使用前台服务来提供向后兼容性。

以下代码段展示了关于如何使用 setExpedited() 方法的示例:

OneTimeWorkRequestBuilder<T>().apply 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值