Android_BroadCast(广播)
四大组件中每个组件都有自己的功能,广播就是消息的接受者.当系统或应用发生了某些动作时,广播就要进行相应的行为.
在使用广播组件时,需要注意一下几点
- 当多个广播有多个相同的Action时,多个广播都会执行.Activity如果有相同的Action时,会弹出有多个相同Action的应用的对话框,让你选择执行哪个应用
- 广播的生命周期只有一个方法——onReveice();
- onReveice()方法在主线程中执行,所以不能写耗时的操作 (4)因为广播的生命周期很短,所以不推荐在广播中启动子线程
- 广播没有继承Context,所以没有上下文
- 广播有两种,一种是有序广播,一种是正常广播.只有有序广播才能abortBroadcast(),这个方法的作用是拦截广播.(关于这两种广播随后会说到)
广播的构建有两种方式,一种是静态构建,另一种是动态构建.先说一下静态构建,也就是静态注册,创建一个广播,然后在清单文件AndroidManifest.xml中注册广播,8ame,action,category等属性.静态注册的特点就是:就是应用程序已经被杀死了,应用中的广播依然可以进行接收消息,所以这种静态注册广播的方法,经常应用在开机自启动中.
动态构建不需要在清单文件AndroidManifest.xml中注册广播,相应的步骤如下:
第一步:创建一个广播,如下图
第二步:在Activity里创建广播的对象,创建一个IntentFalter对象,然后给它添加一个
Action属性,然后在Activity的onResume()方法中进行绑定,在onPause()的方法中
进行解绑.如下图
第三步:动态注册广播以上两步已经完成,这一步是某些特定条件下进行广播的发送,我是
以监听为例
有序广播和正常广播的区别(正常广播和有序广播相对应,所以正常广播叫做无序广播也可以.)
区别一:当具有相同的Action的时候,正常广播中的广播对象会同时执行;有序广播中的广播对象会按照优先级的大小来执行.在清单文件AndroidManifest.xml中的标签中设置android:priority=”“,在引号里面设置数值.在官方文档中优先级的值可以是0到1024,实际上是int类型的最大值.数值越高,优先级越大,优先级越大,就先执行.
区别二:正常广播启动时,用的是sendBroadcast(),里面的参数是Intent对象;而有序广播启动的方式,是sendOrderedBroadcast(),里面有两个参数:第一个参数是Intent对象,第二个参数是设置权限,即接收器必须具有相应的权限才能正常接收到广播。(在正常广播启动的方法中,也有两个参数的启动)