广播
Broadcast 是 Android 四大组件之一,可用于四大组件之间的通信,也可用于不同进程间的通信。(通信也就指的是数据传递)
BroadcastReceiver 广播接收者用于接收系统或其他程序(包括自己程序)发送的广播。
无序广播和有序广播
广播按照发送方式可分为两种 : 无序广播和有序广播
无序广播 : 广播发出后,所有的广播接收者都会在同一时间接收到这条广播,接收没有先后顺序,无法拦截。
有序广播 : 广播发出后,同一时刻只有一个广播接收者能够接收到,优先级高的广播接收者会先收到,当优先级高的广播接收者的 onReceiver() 方法运行结束后,广播才会继续传递,因此可以拦截广播。
广播的两种注册方式 : 静态注册和动态注册
静态注册 : 在清单文件中对广播接收者进行注册 。这种注册方式的广播接收者声明周期会伴随着整个应用,当应用安装的时候,系统自动完成注册。
动态注册 : 通过代码注册,应用不启动,无法接收到广播。
注意 : 理论上来讲,静态注册广播,即便 App 不启动也可以接收到广播 。但是大家可以想一下,我是百度系的一个 App , 启动后发个广播 。结果唤醒了一堆百度系列的 App ,这就很可怕了。因此在实际开发过程中,例如 小米 、华为 的高版本手机 (5.0 、6.0、7.0、8.0) ,在这些手机上,当退出应用或者应用没启动的时候,通过静态注册的广播接收者,根本接收不到广播。
什么时候使用静态注册
- 如果希望广播接受者的生命周期为 App 的声明周期,可以使用静态注册。
- 如果希望 App 未启动的时候就能接收到广播。(注意 高版本的系统已经不能接收到广播)