android BroadcastReceiver广播机制详解
2016-11-03 01:50
120 查看
Context
sendBroadcast(Intent intent) 发送一般广播
sendOrderedBoardcast(Intent intent) 发送有序广播
registerReceiver(receiver,intentFilter) 注册广播接收器
unResisterReceiver(receiver) 解注册广播接收器
BroadcastReceiver
onReceiver(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="BroadcastReceiver全类名"
<!--指定当前receiver的优先级,范围1-1000,越大优先级越高-->
<intent-filter android:priority="1000"/>
<action android name="......">
</intent-filter>
</receiver>
动态注册(纯代码)
XxxBroadcastReceiver receiver = new XxxBroadcastReceiver();
IntentFilter filter = new IntentFilter(action);
registReceiver(receiver,filter);
静态注册和动态注册的比较
静态注册 | 动态注册 | |
注册方式 | 配置清单文件 | java代码 |
注册的时间 | 应用安装成功 手机开机完成 注册时不会创建对象, 接收到广播才创建 | 执行registerReceiver(receiver ,intentFilter) 注册就创建对象 |
生命结束的时间 (解注册) | 应用卸载 对象执行onReceiver()后就回收了 | 执行unregisterReceiver() (activity退出必须解注册) 解注册后对象被回收 |
应用情景 | 需要监听的时间为 应用的整个生命过程 | 只服务于某个Activity/service |
无序广播与有序广播
无序广播 | 有序广播 | |
方式 | context.sendBroadcast(Intent intent) | context.sendOrderedBroadcast(Intent intent) |
多人接收时是否有序 | 无序,都会同时执行 | 有序,根据优先级和注册先后依次执行 |
是否可以中断 | 不可以 | 可以,通过br.abortBroadcast() 中断后,后面的接收器不能接收到此广播 |
相关文章推荐
- Andriod 从源码的角度详解View,ViewGroup的Touch事件的分发机制
- .net 中的SqlConnection连接池机制详解
- JVM 类加载机制详解
- 详解广播机制——初识
- Quick 触摸机制+config详解
- Handler消息机制详解
- dojo事件机制详解(二)
- 反射机制详解
- [置顶] Android事件分发机制 详解攻略,您值得拥有
- 数据库并发机制和事务的隔离级别详解
- Java程序员的必备知识-类加载机制详解
- 负载均衡原理与实践详解 第六篇 健康检查机制详解(上)
- SpringMVC异常处理机制详解[附带源码分析]
- android binder机制详解
- MySQL数据库锁机制之MyISAM引擎表锁和InnoDB行锁详解 作者:hsd2012
- 005——Binder 机制详解—Binder Java框架
- java类加载机制详解
- Java多线程机制详解
- java的垃圾回收机制详解
- 回调机制详解