1. 什么是广播?广播分为几部分?
广播电台:发送信号
![](https://img.haomeiwen.com/i18662890/a72ec9bfaf0083e3.png)
收音机:接收信号
2. 广播接收者:安卓四大组件之一.用于接收如电量低 短信接收 等广播信息。
3. 广播的分类:
* 有序的广播:通过优先级匹配优先级高的广播接收者先获取广播数据 有序广播可以终止广播 有序广播可以修改广播数据
* 无序的广播:电量低的广播,对于所有需要该状态的APP广播接收者来说
接收的顺序是无关紧要.(乱序每次发送广播的时候 接收的顺序是不一样 同时接收得到)
4. 有序的广播开发步骤:
![](https://img.haomeiwen.com/i18662890/1d3cce7f0cda7b3c.png)
1. 创建广播接收者
![](https://img.haomeiwen.com/i18662890/27cf787b289ab24e.png)
2. 为广播接收者配置优先级
![](https://img.haomeiwen.com/i18662890/59790348a8240358.png)
3. 发送有序的广播
![](https://img.haomeiwen.com/i18662890/4aed5896e1af37f6.png)
4. 定义最终的广播接收者跟踪广播状态
![](https://img.haomeiwen.com/i18662890/c0962d9eeb212106.png)
无序和有序广播
无序广播:当广播接收者对广播接收的顺序无关紧要。完全没顺序 顺序随机
有序广播:接收广播的顺序比较重要 当一个广播可以被拦截被修改的时候
常见的广播接收者:
1. 短信拦截器广播接收者 (有序 拦截 优先级 4.4版本以后 广播无法拦截 有序->无序 有些定制手机不遵循规范)
2. 电话外拨广播接收者(有序广播 其他的广播接收者先接收到广播事件--->最后
打电话的应用里面的广播(少于-1000 )才接收到广播然后打开打电话的界面 -1000~1000)
3. SD卡状态监听广播接收者 (无序)
4. 安装卸载的广播接收者 (无序)
广播接收者不可执行耗时操作
ANR:Application NOT RESPONSE 应用无响应 当应用卡顿超过5秒之后
onReceive 不能执行耗时操作 因为他运行在主线程里面执行
实验步骤:
1. 创建一个广播接收者。
2. 在广播接收者里面模拟一个耗时操作
![](https://img.haomeiwen.com/i18662890/d19e9470894014bc.png)
解决方案:如果想在广播接收者里面执行耗时操作,就必须创建一个线程。
网友评论