在 SDK 26,通过令静态注册的广播接收器失效 以限制后台过多应用启动,接受广播等情况。
当运行时,会有以下LOG:
Background execution not allowed: receiving Intent
1. 如果是自己编写发送广播,可以通过 以下方式使广播工作
(1)
if(Build.VERSION.SDK_INT >= 26){
//参数1-包名 参数2-广播接收者所在的路径名
ComponentName componentName=new ComponentName(getApplicationContext(),"com.code.tx1n.tochat.MessageReceiver");
myIntent.setComponent(componentName); }
(2)
if(Build.VERSION.SDK_INT >= 26){
//此方法功能更强大一些,但硬编码存在隐患
myIntent.addFlags(0x01000000);
2. 如果是接收隐式Intent,则只能通过动态注册广播接收器解决