开始:
理解广播与广播接收器:
boolean isOrderedBroadcast() : 判断是否是有序广播
常见系统广播
<receiver android:name="cn.njit.br.MyBroadcastReceiver">
<!--priority指定当前receiver的优先级, 值是0-1000, 越大越好 -->
<intent-filter android:priority="500">
<action android:name="cn.njit.br.mybroadcastreceiver"/>
</intent-filter>
</receiver>
•方式二: 硬编码注册(动态注册)
MyBroadcastReceiver2 receiver2 = new MyBroadcastReceiver2();
IntentFilter filter = new IntentFilter(action);
registerReceiver(receiver2, filter);
区别静态注册与动态注册
|
静态注册 |
动态注册 |
注册方式 |
配置文件 |
Java代码 |
注册的时间 |
应用安装成功/手机开机完成 注册时不会创建对象 接收到广播才创建 |
执行registerReceiver(receiver, intentFilter)
注册就创建对象 |
生命结束的时间 (解注册) |
应用卸载 对象执行onReceive()后就回收了 |
执行unregisterReceiver() (activity退出必须解注册) 解注册后对象被回收 |
应用情景 |
需要监听的时间为应用的整个生命过程中 |
只服务于某个Activity/Se rvice |
发送两种类型的广播
1.发送一般广播
•context.sendBroadCast(Intent intent)
2.发送有序广播
•context.sendOrderedBroadcast(Intent intent)
3.区别两种广播
|
一般广播 |
有序广播 |
多人接收时是否有序 |
无序, 都会同时执行 |
有序,根据优先级和注册先后依次执行 |
是否可以中断 |
不可以 |
可以, 通过br.abortBroadcast() 中断后, 后面的接收器不能接收到此广播 |
图解两种类型的广播