做一个广播功能的时候遇到的问题,在此记录一下
后台执行限制
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);