1.Broadcast概念 是一个全局的监听器,属于Android四大组件之一。Broadcast(广播)是一种广泛运用的在应用程序(APP)之间传输信息的机制。而BroadcastReceiver(广播接收器)是对发送出来的 广播进行过滤接受并响应的一类组件。 2.Broadcast作用:监听 / 接收 应用发出的广播消息,并做出响应。 3.三要素和两步骤。 (1)Broadcast (广播) – 用于发送广播 (2)BroadcastReceiver (广播接收器) – 用于接受广播 (3)Intent (意图) – 用于保存广播相关信息的媒介 (4)创建广播接收器 (5)注册广播接收器 4.广播的类型。 (1)从类型上可以分为有序广播和标准广播两大类。 (2)从广播接收器的注册方法上可以分为静态注册和动态注册。 (3)从发送方式上可以分为普通广播、有序广播、粘性广播、本地广播…。 (4)从所属队列上可以分为前台广播、后台广播。 5.Android 8.0 之后静态广播新特性: (1)取消大部分清单文件中的静态注册广播 (2)应用可以继续在它们的清单中注册显式广播 (3)应用可以在运行时使用 Context.registerReceiver() 为任意广播注册接收器 (4)需要签名权限的广播不受此限制所限所限 (5)需要指的包名类名的方式实现静态广播的收发 6.广播接收器动态广播注册: 和静态广播的创建BroadcastRecevier类似,新建一个BroadcastReceiver子类,该类继承 BroadcastReceiver类。  7.广播接收器动态广播过滤器: 由于动态广播是动态注册的,需要在类中进行初始化的声明,和AndroidManifest.xml中的 类似  8.动态广播的注册和反注册时机: (1)onCreate() -> onDestroy()(即便页面未显示,仍然能接受广播) (2)onResume() -> onPause() (即只有页面显示时,才能接受广播) (3)onStart () -> onStop() 注册与反注册广播方法要成对出现,重复注册、重复注销也不允许。调用Context注册,就要用Context反注册,而不能直接调用unregisterReceiver(mReceiver)。
动态广播和静态广播的demo练习:通过点击两个按钮,实现静态注册和动态注册的广播 1.新建的工程中,通过静态注册创建一个广播,在包名右键,选择”NEW”–>”Other”–>”Broadcast Receiver”。静态注册创建的广播会自动在AndroidManifest.xml中进行广播的注册。  2.通过动态注册创建一个广播,创建一个类,继承BroadcastReceiver类,这个广播在使用的时候需要进行手动注册。  3.创建两个按钮。  4.为两个按钮创建点击时间,点击按钮1进行动态广播发送,点击按钮2进行静态广播发送。  动态广播的注册需要在点击事件中进行编写,同时intent.setAction(“action test”)括号中的内容需要与intentFilter.addAction(“action test”)括号中的内容一致,否则广播接收不到。 5.运行效果。 
|