Android四大组件之Broadcast
动态广播
1、创建一个广播接收者
2、创建InetntFilter,并设置action
3、注册广播接收者。registerReceiver(receiver. intentFilter)
静态广播
通过静态注册广播,我们不需要启动这个应用,也能接受到广播。因为这种方式注册广播会一直都处于监听状态,所以它不会将注册释放,因此,使用静态注册广播的方式相对于动态注册比较耗费资源。
例如,我们在应用中静态注册广播接收器,并监听开机广播,事实上,我们并不需要打开应用,也能在开机完成时监听到这个广播。这中方式有什么应用场景呢?
———比如,你想在开始完成后立马开启你的应用所需要的服务,你就可以这样做(这是打个比方,不是特别推荐这样做。。因为这样多多少少会牺牲一点用户的体验)。
———再比如,监听设备中的app安装与卸载,这很常见,通过在应用中监听这个广播,来收集用户安装和卸载比较多的应用,对于安装较多的应用,往往产品经理就会去把这个应用下载下来小小的借鉴(chao)一下,看看能否在自己的应用上能加上比较有价值的功能。
自定义广播
前面介绍的两种广播我们都是作为接收者去监听系统发送出来的广播。现在我们就自己来定义一个广播,并将其发送。自定义广播有什么用呢?比如我们想要跨进程通信,通知应用内多个地方改变值,都可以通过自定义广播的形式来实现。
有序广播
前面我们介绍的广播,都属于无序广播,也就是说,广播发出去了,只要有对于的action就可以,任何应用都可以接收到。
有序广播是什么呢?——有序广播类似于单位的通知,由上级一级一级往下传。也就是说注册了这个广播的广播接收者,它门接受到广播的顺序有是有先后的。有序广播有以下几个特点:
1、有序性
2、可以终止往下传达(在某个广播接收者接收到广播后,我们可以调用abortBroadcast()方法,终止有序广播往下传达)
3、可以修改广播的内容(在某个广播接收者接收到广播后,我们可以调用setResultExtras(Bundle)方法,修改有序广播往下传达的内容)
广播权限
通过使用自定义广播,我们也可以为广播设置权限,只有设置这个权限的应用才能接收到这个广播。
同理,也可以为广播接收者设置权限,只有设置了该权限的广播,才能被这个广播接收者接收到(不是谁都能给发权限的,。)