主要用于个人复习(基于第一行代码)
广播的类型
标准广播:一种完全异步执行的广播,在广播发出之后,所有的BroadcastReceiver几乎会在同一时刻收到这条广播消息,因此他们没有任何先后顺序而言,效率高,但无法被截断
![](https://img.haomeiwen.com/i6937284/6f0bbf43e2e8b0b4.png)
有序广播:一种同步执行的广播,在广播发出之后,同一时刻只会有BroadcastReceiver能够接受这条广播消息,当这个BroadcastReceiver种的逻辑执行完毕后,广播才会继续传递,此时的BroadcastReceiver是有先后顺序的,优先级高的BroadcastReceiver就可以先收到广播消息,并前面的BroadcastReceiver还可以截断正在传递的广播
![](https://img.haomeiwen.com/i6937284/057ea5afc003d046.png)
接受系统广播
动态注册:动态注册的BroadcastReceiver可以自由地控制注册与注销,但必须在启动程序之后才能接受广播
新建一个BroadcastTest项目
![](https://img.haomeiwen.com/i6937284/e571012b26764245.png)
registerReceiver()方法进行注册,将TimeChangeReceiver的实例和IntentFilter的实例都传进去
注意:动态注册的BroadcastReceiver一定要取消注册,这里再onDestory()方法中调用unregisterReceiver()方法来实现
静态注册
静态的广播接收器一定要在AndroidManifest.xml注册
![](https://img.haomeiwen.com/i6937284/d548a672932aa9fb.png)
android:name:具体注册哪一个BroadcastReceiver
必须在配置文件中进行权限声明,否则程序将会直接崩溃
不要在onReceive()方法中添加过多的逻辑或者任何的耗时操作,因为BroadcastReceiver中不允许开线程,当onReceive()方法运行了较长时间而没有结束时,程序就会出现错误
发送有序广播
新建AnotherBroadcastReceiver
![](https://img.haomeiwen.com/i6937284/ec6a309fcffa39e8.png)
![](https://img.haomeiwen.com/i6937284/6b6333992592103a.png)
修改MainActivity
![](https://img.haomeiwen.com/i6937284/818d20246c207f2c.png)
截断设置:在配置文件中设置优先级
![](https://img.haomeiwen.com/i6937284/8279aecfa2d94ec6.png)
使用本地广播
MainActivity中:
![](https://img.haomeiwen.com/i6937284/543dfa6232152e1e.png)
![](https://img.haomeiwen.com/i6937284/cb9b973b859ee5f0.png)
网友评论