Android 8.0 系统接收不到广播的终极解决方案

本文详细解析了Android8.0系统中对静态广播的限制,旨在提高电池续航和设备性能。介绍了如何通过使用动态广播或在Intent中设置Component参数来适配静态广播,确保跨应用广播在Android8.0上的正常工作。

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

       近期做项目的时候发现一个问题,我项目的app先前是跑在Android 6.0系统上的,静态广播能正常接收没问题,移植到Android 7.0 系统上广播也没问题也能正常接收,但是到了Android 8.0的系统之后,发现广播失效,怎么都接收不了广播,于是疯狂的找度娘,然后又看了一下Android 8.0的api,才知道原因:在Android 8.0系统上,为了提高电池续航时间,提高设备性能,系统会限制未在前台运行的应用的某些行为,如:

  • 在后台运行的应用对后台服务的访问受到限制

  • 应用无法使用其清单注册大部分隐式广播(即并非专门针对次应用的广播)

     对广播的限制具体可以查看一下Android 8.0 API 介绍     https://developer.android.google.cn/about/versions/oreo/background

     解决方法:

  1. 尽量使用动态广播代替静态广播
  2. 如果动态广播不能满足你的需求,必须要使用静态广播的话,那么就得在 Intent 中设置参数 Component参数,然后其他注册广播的步骤和原来在 Android 6.0 系统以下注册的方法一样。

     举个栗子:

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值