1. 是Android 的四大组件之一.

2. 广播的接收器的作用: a, 完成Android应用程序内部组件于组件的通信(传递数据)
b, 实现Android应用程序和应用程序之间的通信(跨进度的通信)
c, 监听系统的一些状态变化, 可以让自己的应用程序根据系统的变化做出相应的响应.
3. 用广播接收器所涉及到的相关内容(广播接收器实现通信的模型)
a, 广播接收器(BroadcastReceiver)
b, 广播(是Intent)
c, 广播的发送方(调用sendBroadcast方法)
4. 广播接收器有2种注册方式:
a,静态注册
注册方式: 在配置文件中通过<receiver>标签注册
b,动态注册
注册方式: 在代码中通过调用registerReceiver()方法实现对一个广播接收器的注册
官方建议: 注册应该在Activity的onResume生命周期中实现,解除注册在Activity的onPause生命周期中实现.(目的:减轻系统负载)
5. 如何通过代码实现对广播接收器的2种注册:
a, 继承BroadcastReceiver抽象类,实现其中的抽象方法(onReceive方法).
b, 创建广播接收器子类对象(由自己创建[动态注册的时候]或者由系统创建[静态注册的时候])
c, 通过注册方式实现对广播接收器的注册(指明广播接收器所能接收的广播类型)
d, 创建广播对象(Intent对象)
e, 调用发送广播的方式把广播发送出去
6. 静态注册的广播接收器和动态注册的广播接收器的区别:
动态注册的接收器只能在程序[注册有接收器的界面处于运行状态的时候]运行的时候有效.
静态注册的接收器在任何情况下都能够接收到对应类型的广播 (静态注册的广播接收器不受应用程序的生命周期影响)
7. 广播接收器的生命周期:
广播接收器的生命周期就是onReceive()方法执行期间.
不能在广播接收器的生命周期方法中执行的操作: 1,不能执行异步的操作 2,不能弹对话框以及绑定服务
8.广播接收器运行于那个线程中:在应用程序的主线程中执行
9. 广播的分类:(广播本省不决定类型,类型是由发送方调用不同的方法决定)
a, 有序广播: 通过sendOrderedBroadcast()方法发送的广播称为有序广播
特性:对于广播接收器来说,广播的接收是同步[依次接收]
可以通过result以及abort相关的方法实现广播接收器之间的数据传递和广播的中止传递
通过android:priority属性实现对于广播接收器的优先的控制[值得大先接收]
b, 无序广播: 通过sendBroadcast()方法发送的广播称为无序广播
特性: 对于所有的广播接收器广播的接收是异步的.一般同时接收到广播.
用无序广播发送数据效率会更加高一些.
不能使用广播接收器中和result以及abort相关的方法
通过andriod:priority属性控制无序广播的接受顺序
10.创建的Intent如果用于广播接收器,如果该Intent中有Activity的启动源和目标Activity, 也是不能启动Activity.
同样的,把Intent用于启动Activity,如果该Intent中的action值和某一个广播接收器所能接收的广播的类型匹配,这个接收器也是不能接收该Intent.
11.广播的安全性(问题的引入:
广播接收器是可以跨进程实现数据的传递,当数据被别的应用程序接收,可能会被修改)
1, 定义广播类型值得时候,用本应用程序的包名作为前缀.
2, 定义带有权限的接收器,控制哪一个应用程序可以往该接收器中发送广播
a,发送权限广播[控制哪些应用程序能够接收到该广播]:调用send方法的时候传入权限值.
实现方式: 发送方--> 1,在配置文件通过<permission>标签定义权限
2,调用send方法发送广播的时候传入该权限
接收方--> 1,在配置文件通过<permission>标签定义和发送方相同的权限
2,使用<uses- permission>申请使用该权限
b,定义权限接收器[控制哪些应用程序能够往接收器中发送广播]:
在注册接收器的时候指定权限.
实现方式: 接收方---->1,在配置文件中通过<permission>标签定义权限
2,在采用静态方式注册广播接收器的时候,在<receiver>标签中通过android:permission属性设定权限
发送方: --->1,在配置文件通过<permission>标签定义和发送方相同的权限
2,使用<uses-permission>申请使用该权限
3, 通过广播接收器的android:exported控制接收器是否对外部的应用程序暴露
4, 在Android4.0中可以通过Intent.setPackage方法传入应用程序的包名,控制广播的定向发发.
5, 通过LocalBroadcastManager发送本地广播.
[所发送的广播只会在应用程序内部,不会发到本应用程序外部]
实现方式: 1, 通过getInstance静态方法获取LocalBroadcastManager对象
2, 通过管理器对象的registReceiver方法实现广播接收器的注册以及unregistReceiver方法实现解除注册
3,通过管理对象的sendBroadcast方法实现发送本地广播
(程序内部如果需要通过广播传递数据, 应该优先选择本地广播方式,这种方式数据传递的效率比较高)
//定义和发送方相同的权限
<permission android: name/>
//在接收方申请权限
<uses-permission android: name/>
12. 通过广播接收器接收系统广播:
a,监听手机开机
String action= Intent.ACTION_BOOT_COMPLETED://开机广播接收器的类型
b,监听手机网络状态
c,监听手机的来电去电
添加黑名单需要加权限,CALL_PHONE