Android广播总结
来源:互联网 发布:手机 dns劫持 数据网络 编辑:程序博客网 时间:2024/06/08 08:19
以前面几篇文章为基础,总结一下Android广播系统的一些知识
- Android广播分为有序广播和普通广播
- Android广播也可以分为前台广播和后台广播
- 广播接收器的优先级默认是0
- 动态注册的广播接收器是非常驻型,一般是跟着Activity的生命周期走,所以在Activity结束前需要取消注册广播接收器;静态注册的广播是常驻型,即使应用未启动,当有相关的广播发出时,其会被系统调用自动运行
- 当广播为有序广播时,优先级高的先接收(不分静态和动态);同级别的广播,动态优先于静态;同级别同类型的广播,静态:先扫描的优先于后扫描的,动态:先注册的优先于后注册的
- 当广播为普通广播时(默认广播)时,无视优先级,动态优先于静态;同类型广播,静态:先扫描的有限于后扫描的,动态:先注册的优先于后注册的
- 动态注册的广播接收器,只可以接收使用隐式Intent发送的广播,显示的Intent发送的广播接收不到;静态注册的广播接收器可以接收显示Intent和隐式Intent发送的广播,但是显示Intent指示的ComponentName必须是静态注册的广播接收器的组件名
- 如果广播指定了FLAG_RECEIVER_REGISTERED_ONLY,则只有动态注册的接收器可以收到
- 不管是静态注册的还是动态注册的receiver,均默认运行在UI主线程,动态注册的receiver可以指定运行的线程
- 同一个BroadcastReceiver可以注册多次,每次的IntentFilter可以不一样,但是Handler和Context必须是一样的,否则会报IllegalStateException异常。
- 串行队列中的广播客户端收到后会调用服务端的finishReceiver,有序广播的动态注册的receiver和静态注册的都是在串行队列中。服务端因为需要等待客户端调用finishReceiver,以改变BroadcastRecord的状态,所以可以实现串行分发。
- 服务端到客户端的分发函数声明为oneway表示不需要等待函数执行结果,而立马返回。aidl中声明了oneway,在生成的xx.stub中函数没有reply.readexception,该函数会等待客户端执行完成再返回。无论是串行队列还是并行队列中的AMS调用各App的接口均是one-way的,所以当一个BroadcastQueue在等待处理串行队列中的广播时,仍然可以发送普通广播。
阅读全文
0 0
- android广播总结
- Android BroadcastReceiver 广播总结
- ANDROID系统广播总结
- Android 广播 总结
- Android广播机制总结
- 02.1android 广播总结
- Android 广播学习总结
- Android广播机制总结
- android广播总结
- android 广播的总结
- Android Broadcast广播总结
- Android广播机制总结
- Android广播机制总结
- android 广播个人总结
- Android广播总结
- android 广播总结
- Android广播总结
- Android 基础之广播总结
- PHP开源框架之AJAX
- Ubuntu14.04.3安装Openssh-server
- 条件随机场专题(3)--说起CRF,不得不提的HMM
- win10下安装caffe新得
- 搭建自己的docker registry,非生产环境
- Android广播总结
- zxing实现生成二维码与解析
- 安卓QQ,微信分享URL后面拼接参数
- uva 514 Rails
- 因服务器时间不一致导致的MapRecude 任务运行失败
- 计算机网络——运输层TCP/UDP
- tf.cond()的用法
- matlab转置的问题
- [SCOI2005]扫雷