Android广播机制-BroadcastReceiver
来源:互联网 发布:阿迪达斯网络授权书 编辑:程序博客网 时间:2024/05/22 13:48
初次跳槽,经验匮乏,offer至今没有拿到,快一个月了,又逼近年关,各种尴尬症并发!总结了下失利的因素:投简历没有经验;工作不对口;裸辞倒挺干脆;气运还是差了。但最主要的还是自身:haven’ t fall in love with programming yet,passive -learning ! 吃亏在于之前的工作性质导致我存在很多不足,还好我年轻,权且当做是积累经验。
1.概念:是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件,主要用来接收来自系统和自定义的广播。
背景:android配置有不同的硬件组件,硬件按钮/加速器/WIFI/光传感器等,各种以不同的方式影响着手机的状态,需要一种机制监听这种变化,捕获系统事件和设置变化,以应对各种情况和编写出更健壮的应用程序。
2.应用场景 【系统广播类型举例】:、
2.1.开机广播:当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能【android.intent.action.BOOT_COMPLETED】
2.2. 当网络状态改变:系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作【android.net.conn.CONNECTIVITY_CHANG】
2.3. 电池电量改变:系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度【android.intent.action.BATTERY_CHANGED】
注意事项:注册接收系统类型的广播,往往需要申请声明相应的使用权限,用uses-permission标签来标识,且不同的系统事件要求不同的注册方式。
3.注册方式
3.1.静态注册:在AndroidManifest.xml文件中配置
特点:只要设备开启,广播接收器也就开着,无论apk是否启动,其所订阅的广播出发时也会对其起作用。
3.2.动态注册:
Context. registerReceiver/unregisterReceiver 存在多个重载版本,常用如下:
void unregisterReceiver(BroadcastReceiver receiver);
Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter);
特点:随发送者的生命周期,
应用场景:如果只在应用程序处于运行或者活动状态时才关心广播事件,一旦组件销毁,广播也失效了。
4.reciver标签的各种属性
5.广播类型
5.1.普通广播:Normal Broadcast,异步;接收者无法终止广播,无法阻止其他接收者的接收动作;通过priority属性设置优先级[从-1000到1000.优先级越大,接收广播越靠前],使用Context.sendBroadcast(Intent intent);【返回值是void】来发送广播
5.2.有序广播:Ordered Broadcast,同步;每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止这个广播,同时还可以封装数据传递给下个接受者中。
BroadcastReceiver.setResultExtras(Bundle extras) 【返回值:void】
BroadcastReceiver.getResultExtras(boolean makeMap)【返回值:Bundle】
BroadcastReceiver .abortBroadcast() 【返回值:void】
Context. sendOrderedBroadcast(Intent , String permission)
5.3.粘性广播
Context.sendStickyBroadcast(Intent intent) //现在已经不推荐使用,可以先发送广播,后注册广播依旧收到,也就是intent会继续保留,允许之后匹配该intent的注册收到相同的广播。
6.生命周期
6.1. void onReceive(Context context, Intent intent);10秒内执行完就销毁;
【You cannot launch a popup dialog in your implementation of onReceive(),取而代之的是使用NotificationManager来提示,for interacting with services 使用Context.startService()而不是bindService】
6.2.触发过程:当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法;
7. LocalBroadcastManager
参考文档:http://www.it165.net/pro/html/201308/6911.html
未完待续。。。
- Android广播机制(BroadcastReceiver)
- Android广播机制 BroadCastReceiver
- Android广播机制-BroadcastReceiver
- Android 广播机制 BroadCastReceiver
- Android -BroadcastReceiver广播机制
- android---broadcastReceiver广播机制
- Android广播机制,BroadcastReceiver
- Android广播接收机制(BroadcastReceiver)
- Android广播接收机制(BroadcastReceiver)
- Android广播接收机制(BroadcastReceiver)
- [Android随笔]BroadcastReceiver广播机制
- android广播机制BroadCastReceiver解析
- android 广播机制Broadcast、BroadcastReceiver用法解读
- Android学习之广播机制BroadcastReceiver
- Android 四大组件之一:BroadcastReceiver广播机制
- Android简单实现BroadCastReceiver广播机制
- Android --- 广播机制(BroadcastReceiver应用)
- BroadcastReceiver广播机制
- 【LEETCODE】26-Remove Duplicates from Sorted Array
- Android: JNI动态注册
- Android 事件分发机制View篇
- Windows10下JDK、eclipse与SDK及ADT的配置
- 关于TCP的滑动窗口和拥塞控制
- Android广播机制-BroadcastReceiver
- OCP课程之ORACLE审计
- 【jQuery】:visible过滤选择器
- Linux之hello驱动编写
- 用linux制作Mac OS U盘启动
- Appstore检查自动更新时间
- 【C语言提高32】数组类型
- 一、Java多线程之wait,notify,sleep,yield,join,suspend,resume
- 不浪漫爱情--等你来--等你来