广播与OnXxxListener的区别是广播是属于系统级的监听器,它拥有自己的进程,只要存在与之匹配的Intent被广播出来,BroadcastReceiver就会被激活。
BroadcastReceiver注册有两种方式:①静态注册②动态注册
①静态注册,在manifest中注册定义,是常驻系统内存的,一般是监听系统级别的广播。
<receiver android:name=".ReceiverDemo">
<intent-filter>
<action android:name="ACTION"/>
</intent-filter>
</receiver>
②动态注册,需要的时候自己注册定义,不需要的时候就取消注册
IntentFilter filter = new IntentFilter("ACTION");
ReceiverDemo reveiverDemo = new ReceiverDemo();
registerReceiver(receiverDemo);
unRegisterReceiver(receiverDemo);
发送广播的方式有两种:①无序广播②有序广播
①无序广播:发送之后。在同一时间,所有的接受者都在同一时间接受到消息。缺点是在接受后不能拦截广播。
sendBroadcast();
②有序广播:通过设置priority属性是设置接受级别。取值范围是-1000~1000,数值越大级别越高。
有序广播是按等级接受,上一个接受者可以修改或拦截广播内容。修改广播内容通过setResultExtras();
sendOrderBroadcast();