安卓四大组件之BroadCastReceiver

简介BroadCastReceiver

广播分为两种:无序广播,有序广播

在清单文件中注册广播称之为静态注册

 
    
        
        
    

在代码中注册称之为动态注册

BroadcastReceiver receiver = new BroadcastReceiver();
IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction(CALL_ACTION); 
context.registerReceiver(receiver, intentFilter);

BroadCastReceiver的生命周期

  1. 广播接收者的生命周期非常短暂的,在接收到广播的时候创建,onReceive()方法结束之后销毁;
  2. 广播接收者中不要做一些耗时的工作,否则会弹出 Application No Response 错误对话框;
  3. 最好也不要在广播接收者中创建子线程做耗时的工作,因为广播接收者被销毁后进程就成为了空进程,很容易被系统杀掉;
  4. 耗时的较长的工作最好放在服务中完成;

如何让自己的广播只让指定的 app 接收

发送广播的应用A要在清单文件中注册自定义权限,假设自定义权限名叫com.test.android.permission




接收广播的应用B要在清单文件中注册



或者:


    
        
    

什么是最终广播接收者

ContextWrapper.sendOrderedBroadcast() 发送的有序广播

该广播会被执行两次,第一次是按顺序执行到的一次,第二次是作为final receiver必须接收的一次

广播的优先级对无序广播生效吗

生效的,广播的优先级范围是 [-1000, +1000],但设置的优先级范围超过这个范围也是可以的

动态注册广播优先级谁高

谁先注册谁优先级高

如何判断接收的是有序广播还是无序广播

在BroadcastRecevier类中的onReceiver方法中,可以调用 boolean b = isOrderedBroadcast(); 判断

你可能感兴趣的:(安卓四大组件之BroadCastReceiver)