BroadcastReceiver:广播接收者
2016-07-25 09:00
405 查看
广播的特征:
-- 有1个广播的发送方,若干个接收方-- 通过“频道”匹配发送方与接收方在Android系统中,把具有广播的通信方式的特征的数据传输方式称之为“广播”。
BroadcastReceiver是Android系统的核心组件之一。
【广播的发送与接收】1. 自定义类,继承自BroadcastReceiver
2. 在AndroidManifest.xml中注册该自定义的广播接收者
3. 当需要发送广播时,调用sendBroadcast(Intent)方法实现发送,该方法是ContextWrapper定义的方法,所以在Activity或Service中都可以直接调用该方法,在发送广播之前,应该为Intent对象配置Action属性,用于确定广播的“频道”
4. 在AndroidManifest.xml中,找到广播接收者的注册节点,添加子级节点,配置节点属性,使之匹配广播的发送方的“频道”
【广播接收者的注册方式】
1. 静态注册:在AndroidManifest.xml中注册,这种方式注册的广播接收者是常驻型的,即只要APP安装到手机上,就会开始接收广播,直至APP被卸载,而无视该APP有没有在手机上运行。
2. 动态注册:在程序的运行过程中通过调用registerReceiver(BroadcastReceiver, IntentFilter)方法注册,这种方式注册的广播接收者仅当注册后才会开始接收广播,当需要停止接收时,应该调用unregisterReceiver(BroadcastReceiver)方法注销。
【广播的种类】
1. 普通广播 / 无序广播:表现为广播的接收者们将不区分先后顺序,几乎同时收到广播,并且广播接收者们在接收广播时互不相干
2. 有序广播:表现为广播的接收者们会根据一定的先后顺序,接收到广播,类似于生活中的“传话”的特性
3. 粘滞广播 / 粘性广播:(也区分为有序和无序,无视:在Android 5.0已经声明为过期,不推荐使用)
【有序广播的接收者们的优先级】
1. 根据注册广播时,IntentFilter的priority属性决定,该属性的值是int类型的数值,数值越大,则优先级越高,即更优先接收到广播,反之,数值越小,则优先级越低,即越靠后收到广播
2. 当多个广播接收者的priority属性值相同时,动态注册的广播接收者的优先级更高
3. 当根据以上2条规则无法确定优先级时,将根据注册的先后顺序进行区分,先注册的广播接收者的优先级将更高,后注册的则更低Ps:如果是在不同的应用程序中,都使用了相同的注册方式,且priority属性值相同,如果都是使用的动态注册,可以直接区分出执行注册的先后顺序,如果都是使用静态注册,则根据项目的package属性值,按照字典排序法进行区分。
【有序广播的拦截】
在有序广播的接收者中,可以调用abortBroadcast()方法,终止有序广播向后继续传递。
【有序广播的篡改】在有序广播的接收者中,可以通过调用setResult???()方法,向广播中添加数据,优先级更低的广播接收者可以通过调用对应getResult???()获取此前被添加进的数据。
-- 有1个广播的发送方,若干个接收方-- 通过“频道”匹配发送方与接收方在Android系统中,把具有广播的通信方式的特征的数据传输方式称之为“广播”。
BroadcastReceiver是Android系统的核心组件之一。
【广播的发送与接收】1. 自定义类,继承自BroadcastReceiver
2. 在AndroidManifest.xml中注册该自定义的广播接收者
3. 当需要发送广播时,调用sendBroadcast(Intent)方法实现发送,该方法是ContextWrapper定义的方法,所以在Activity或Service中都可以直接调用该方法,在发送广播之前,应该为Intent对象配置Action属性,用于确定广播的“频道”
4. 在AndroidManifest.xml中,找到广播接收者的注册节点,添加子级节点,配置节点属性,使之匹配广播的发送方的“频道”
【广播接收者的注册方式】
1. 静态注册:在AndroidManifest.xml中注册,这种方式注册的广播接收者是常驻型的,即只要APP安装到手机上,就会开始接收广播,直至APP被卸载,而无视该APP有没有在手机上运行。
2. 动态注册:在程序的运行过程中通过调用registerReceiver(BroadcastReceiver, IntentFilter)方法注册,这种方式注册的广播接收者仅当注册后才会开始接收广播,当需要停止接收时,应该调用unregisterReceiver(BroadcastReceiver)方法注销。
【广播的种类】
1. 普通广播 / 无序广播:表现为广播的接收者们将不区分先后顺序,几乎同时收到广播,并且广播接收者们在接收广播时互不相干
2. 有序广播:表现为广播的接收者们会根据一定的先后顺序,接收到广播,类似于生活中的“传话”的特性
3. 粘滞广播 / 粘性广播:(也区分为有序和无序,无视:在Android 5.0已经声明为过期,不推荐使用)
【有序广播的接收者们的优先级】
1. 根据注册广播时,IntentFilter的priority属性决定,该属性的值是int类型的数值,数值越大,则优先级越高,即更优先接收到广播,反之,数值越小,则优先级越低,即越靠后收到广播
2. 当多个广播接收者的priority属性值相同时,动态注册的广播接收者的优先级更高
3. 当根据以上2条规则无法确定优先级时,将根据注册的先后顺序进行区分,先注册的广播接收者的优先级将更高,后注册的则更低Ps:如果是在不同的应用程序中,都使用了相同的注册方式,且priority属性值相同,如果都是使用的动态注册,可以直接区分出执行注册的先后顺序,如果都是使用静态注册,则根据项目的package属性值,按照字典排序法进行区分。
【有序广播的拦截】
在有序广播的接收者中,可以调用abortBroadcast()方法,终止有序广播向后继续传递。
【有序广播的篡改】在有序广播的接收者中,可以通过调用setResult???()方法,向广播中添加数据,优先级更低的广播接收者可以通过调用对应getResult???()获取此前被添加进的数据。
相关文章推荐
- 利用IE收听“广播”
- Android广播接收机制详细介绍(附短信接收实现)
- Android中BroadcastReceiver(异步接收广播Intent)的使用
- Jquery实现仿腾讯微博发表广播
- Android使用广播(BroadCast)实现强制下线的方法
- Android基于广播事件机制实现简单定时提醒功能代码
- Android使用BroadcastReceiver实现手机开机之后显示画面的功能
- Android提高之BroadcastReceiver实例详解
- 详解Android中BroadCastReceiver组件
- Android编程四大组件之BroadcastReceiver(广播接收者)用法实例
- Android实现静态广播监听器的方法
- Android中的广播、服务、数据库、通知、包等术语的原理和介绍(图解)
- Android中的广播(BroadCast)详细介绍
- Android中的广播和广播接收器代码实例
- Android开发之BroadcastReceiver用法实例分析
- Android基础知识之broadcast广播详解
- Android开发之广播机制浅析
- Android 广播大全 Intent Action 事件详解
- 广播