理解广播与广播接收器:
1. 广播事件处理属于 系统级的事件处理 ( 一般事件处理是属于 View 级的事件处理 )
2. 一个应用可以在发生特定事件时 发送 Broadcast , 系统中任何应用只要注册了 对应 Receiver 就会 接收 到此 Broadcast
3. 一个应用如果对某个广播感兴趣 , 就可以 注册对应的 Receiver 来接收广播
4. 广播事件机制是 应用程序 ( 进程间 ) 之间通信 的一种手段
相关API
• Context
• sendBroadcast (Intent intent) : 发送一般广播
• sendOrderedBroadcast (Intent intent,String ) : 发送有序广播
• registerReceiver (receiver, intentFilter ) : 注册广播接收器
• unRegisterReceiver (receiver) : 解注册广播接收器
• BroadcastReceiver
• onReceive (Context context , Intent intent) : 接收到广播的回调
• abortBroadcast () : 中断广播的继续传播
boolean isOrderedBroadcast() : 判断是否是有序广播
常见系统广播
• 收到短信广播 : android.provider.Telephony.SMS_RECEIVED
• 开机完成广播 : Intent.ACTION_BOOT_COMPLETED
• 应用被卸载广播 : Intent.ACTION_PACKAGE_REMOVED
• 手机锁屏 : Intent.ACTION_SCREEN_OFF
• 手机开屏 : Intent.ACTION_SCREEN_ON
注册广播接收器
• 方式一 : 配置文件注册 ( 静态注册 )
<receiver android:name=“cn.njit.br.MyBroadcastReceiver”>
<intent-filter android:priority=“500”>
<action android:name=“cn.njit.br.mybroadcastreceiver”/>
•方式二**😗* 硬编码注册**(动态注册)**
MyBroadcastReceiver2 receiver2 = new MyBroadcastReceiver2();
IntentFilter filter = new IntentFilter(action);
registerReceiver(receiver2, filter);
区别静态注册与动态注册
| 静态注册 | 动态注册 |
注册方式 | 配置文件 | Java代码 |
注册的时间 | 应用安装成功/手机开机完成 注册时不会创建对象 接收到广播才创建 | 执行registerReceiver(receiver, intentFilter)
注册就创建对象 |
生命结束的时间 (解注册) | 应用卸载 对象执行onReceive()后就回收了 | 执行unregisterReceiver() (activity退出必须解注册) 解注册后对象被回收 |
应用情景 | 需要监听的时间为应用的整个生命过程中 | 只服务于某个Activity/Se rvice |
发送两种类型的广播
1.发送一般广播
•context.sendBroadCast(Intent intent)