Android——Broadcast Receiver
来源:互联网 发布:淘宝儿童模特 编辑:程序博客网 时间:2024/05/18 06:19
休假期间整理的资料,部分参考网上内容。
在android中,通过广播(broadcast)可以通知其他广播接受者某个事件发生了。比如电源强度,信号强度等。
Broadcast机制是基于一种注册方式的,Broadcast Receiver将其特征描述并注册在系统中。根据注册时机,可以分为两类,网上有人称之为静态注册和动态注册。
静态注册,就是Broadcast Receiver的相关信息写在配置文件中,系统会负责在相关事件发生的时候及时通知到该Broadcast Receiver。这种模式适合于这样的场景:某事件发生
-> 通知Broadcast -> 启动相关处理应用。比如,监听来电、邮件、短信之类的,都隶
属于这种模式。 这个方式实现如下:
(1)接收广播
Public class MyBroadcastReceiver extends BroadcastReceiver {
Public void onReceive(Context context, Intene intent){
// TODO
}
}
(2)发送广播
Intent it = new Intent(NEW_BROADCAST_FILTER);
sendBroadcast(it);
(3)配置广播
在receiver的action中定义了该receiver能够接受的广播,Manifest.xml定义部分:
<receiver android:name=”.MyBroadcastReceiver”>
<intent-filter>
<action android:name= NEW_BROADCAST_FILTER />
</intent-filter>
</receiver>
动态注册,注册这样的事情都是由应用自己来处理的,通常是在OnResume事
件中通过registerReceiver进行注册,在OnPause等事件中通过unregisterReceiver取消注
册,通过这种方式使其能够在运行期间保持对相关事件的关注。比如,判断网络变化,有些应用会在运行期间关注网络状况变化的需求,使其可以在有网络的时候优先使用网络,在其他情况下,首先通过本地数据。而这样的监听,只需要在其工作状态下保持就好,不运行的时候,管你是天大的网路变化,与我何干。其模式可以归结为:启动应用 -> 监听事件 -> 发生时进行处理。 动态注册广播方式如下:
(1) 声明一个BroadcastReceiver
BroadcastReceiver mReceiver=new BroadcastReceiver(){
Public void onReceive(Context context,Intent intent){
//收到Broadcast会跑到这里
}
}
(2) OnResume时,通过registerReceiver注册。
IntentFilter mfilter=new IntentFilter();
mfilter.addAction(NEW_BROADCAST_FILTER);
registerReceiver(mReceiver,mfilter);
(3)OnPause时,通过unregisterReceiver反注册。
unregisterReceiver(mReceiver);
android中发送广播有两种方式,Context.sendBroadcast和Context.sendOrderedBroadcast,前者发出的称为Normal broadcast,所有关注该消息的Receiver,都有机会获得并进行处理;后者放出的称作Ordered broadcasts,顾名思义,接受者需要按资排辈,排在后面的能否收到广播,需要看前面的处理方式,如果前面的Receiver阻止了这个消息继续广播,排在后面的就不会在接收到这个广播,短信广播就是Ordered broadcasts。
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="1999">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
Ordered broadcasts根据priority值确定优先级,值越大优先级越高,如果你的短信程序中priority最大,接收到短息广播后阻止了其继续广播,就达到了拦截短信的效果。
最后需要注意的是,当Broadcast Receiver接收到相关的消息,在OnReceive中不要执行很消耗时间(通常不大于5秒)的操作,通常把消耗时间的操作放到一个Service中,在OnReceive中启动该Service。
http://www.devdiv.com/home.php?mod=space&uid=14682&do=blog&id=3776
- Android——Broadcast Receiver
- Android基础知识——组件Broadcast Receiver
- Android组件——Broadcast Receiver
- Android学习之路——Broadcast Receiver
- Android入门——Broadcast Receiver详解与应用
- Android四大组件之一——Broadcast Receiver
- android 之broadcast receiver
- Android Broadcast receiver 编程
- Android的Broadcast Receiver
- Android Broadcast receiver 编程
- android Broadcast Receiver
- android broadcast receiver
- android-Broadcast receiver
- 【android】Broadcast Receiver
- android开发 - Broadcast Receiver
- android broadcast receiver
- Android Broadcast Receiver
- Android-基础-broadcast receiver
- 黑马程序员:API
- Word 域代码:TOA(引文目录)域
- 巧用Media Player把CDA格式转换成MP3
- win7 将不提供免费午餐
- Java的未来在哪里 探营Java圆桌会议
- Android——Broadcast Receiver
- MySQL P及以上数据量优化方案
- 《相亲记》工作之余博大家一笑
- c# split函数
- Native NT Application 的编写与调试入门
- Add Redistribution
- Log4Net使用指南
- Ubuntu中查看网卡信息的基础知识
- 甲骨文称谷歌因侵犯Java专利需赔偿26亿美元