关于Android8.0之后广播问题

做一个广播功能的时候遇到的问题,在此记录一下

后台执行限制
Android 8.0 为提高电池续航时间而引入的变更之一是,当您的应用进入已缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。

此外,为提高设备性能,系统会限制未在前台运行的应用的某些行为。具体而言:

现在,在后台运行的应用对后台服务的访问受到限制。
应用无法使用其清单注册大部分隐式广播(即,并非专门针对此应用的广播)。

就是说无法隐式发送广播了

比如:

Intent intent = new Intent();
        intent.setAction(ACTION);
        sendBroadcast(intent);

上面这种发送广播的方法,如果时静态注册的广播就无法接收到广播

需要设置package或者componentName

Intent intent = new Intent();
        intent.setAction(ACTION);
 //       intent.setPackage(getPackageName());
        ComponentName componentName = new ComponentName(this,MyBroadCastReceiver.class);
        intent.setComponent(componentName);
        sendBroadcast(intent);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容