BroadcastReceiver浅析
1.什么是BroadcastReceiver?
本质上是属于一个监听器,但onXxxListenter只是程序级别的监听器,当程序退出时候监听器也随之关闭。而BroadcastReceiver是系统级别的监听器,只要存之匹配的intent被广播出来,BroadcastRecevier就会被激发。
2.如何使用BroadcastRecevier
原理:子类继承BroadcastReceiver,并为该子类添加intent描述,当程序发送intent的时候,intent会进行匹配搜索,当与该子类的intent描述相一致的时候,就会调用子类的onRecevie()方法
步骤一:子类继承BroadcastReceiver并重写onReceive()
public class FirstBroadcast extends BroadcastReceiver {
private static final String TAG = "FirstBroadcast";
@Override
public void onReceive(Context context, Intent intent) {
//当Broadcast被intent启动的时候调用该方法
Log.d(TAG,"The Broadcast start");
}
}
步骤二:添加intent描述(有两种方式)
<!--方法一:在AndroidManifest.xml中注册-->
<receiver android:name=".FirstBroadcast">
<intent-filter>
<!--name可以系统给的也可以是自定义的-->
<action android:name="com.chen.firstBroadcast"/>
</intent-filter>
</receiver>
//方法二:在Activity代码中编写
public class MainActivity extends AppCompatActivity {
private FirstBroadcast mFirstBroadcast; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mFirstBroadcast = new FirstBroadcast();//创建Broadcast
IntentFilter intentFilter = new IntentFilter();//创建intent描述
intentFilter.addAction("com.chen.FirstBroadcast");//将描述装入
registerReceiver(mFirstBroadcast,intentFilter);//注册到Broadcast
}
}
步骤三:利用Intent发送给Broadcast
//在MainActivity中
Intent intent1 = new Intent("com.chen.FirstBroadcast");、、刚在注册的描述
sendBroadcast(intent1);
3.有序广播和普通广播
普通广播(Normal Broadcast):可在同一时刻被所有接收者接收到,所以说缺点是:无法将数据结果传递给下一个。
sendBroadcast()发送无序广播
有序广播(Ordered Broadcast):有序广播的接收者按照之前定义的优先级依次接收Broadcast,如:A>B>C,则A先收到,然后B,最后C。
设置优先级①在AndroidManifest的<Intent-filter android:priority=数值> ②在代码的IntentFilter对象的 setPriority()取值范围是1~1000
sendOrderedBroadcast()发送有序广播。
同时,优先收到广播的接收者可以停止继续发送Broadcast:调用abortBroadcast();
优先收到广播的接收者可以通过setResultExtras(Bundle)将数据存入Broadcast,然后传送给下一个接收者,下一个接收者通过Bundle bundle = getResultExtras(true);
接收数据
4.注解
1.若BroadRecevier的onRecevie()不能再10秒内完成的话,Android会认为该程序无响应。
2.系统收到短信发出的Broadcast属于Ordered Broadcast。
5.作用
1.Service与Activity之间交互的桥梁
2.接收系统发出的Broadcast(系统发出的常用广播:http://blog.sina.com.cn/s/blog_7dbac1250101mt5h.html)
BroadcastReceiver浅析的更多相关文章
- Android AIDL浅析及异步使用
AIDL:Android Interface Definition Language,即 Android 接口定义语言. AIDL 是什么 Android 系统中的进程之间不能共享内存,因此,需要提供 ...
- Android BroadcastReceiver使用
1. 介绍 BroadcastReceiver用于接收广播事件(Intent), 是Android四大组件之一 2. 使用 2.1 实现广播接收类 实现一个广播收类继承BroadcastReceiv ...
- SQL Server on Linux 理由浅析
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
- 【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 高性能IO模型浅析
高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking ...
- netty5 HTTP协议栈浅析与实践
一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...
- Jvm 内存浅析 及 GC个人学习总结
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...
- 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
随机推荐
- CAA调试
在需要调试的Module(*.m)上右键,选择属性,命令位置选择你的framework目录 路径选择对应工程目录下的\intel_a(或者Win64 -- 64位机器) 然后就可以尽 ...
- 移动端zepto.js文件的构建
因为在zepto的官网http://www.zeptojs.cn/#download下载的文件只包括了默认的几个模块,这并不能全部适应我们所需功 能,还需要按自己需要去添加相应模块.所以需要去构建我们 ...
- 整理:GET与POST的区别
1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的. (1).所谓安全的意味着该操作用于获取信息而非修改信息.换句话说,GET 请求一般不应产生副作用.就是说,它仅仅是获取资源信息,就 ...
- Sum Problem-hdu-1001
Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calc ...
- FatMouse' Trade(hdoj1009)
Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding th ...
- gdal vc++ 配置说明
1在VC中,打开菜Tool-Option,在Directories页面中的Library files中和Include files中分别添加GDAL的LIB文件目录和INCLUDE文件目录2打开菜 ...
- 图片拉伸: stretchableImageWithLeftCapWidth
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight: (NSInteger)topCa ...
- 【IPC通信】基于管道的popen和pclose函数
http://my.oschina.net/renhc/blog/35116 [IPC通信]基于管道的popen和pclose函数 恋恋美食 恋恋美食 发布时间: 2011/11/12 23:20 ...
- 1033. To Fill or Not to Fill (25)
题目链接:http://www.patest.cn/contests/pat-a-practise/1033 题目: 1033. To Fill or Not to Fill (25) 时间限制 1 ...
- 爱加密亮相第十八届软博会,移动App安全引关注
2014年5月29日至31日,2014年第十八届中国国际软件博览会在北京展览馆举行,此次软博会的主题为"软件引领信息消费,助力经济转型升级",充分展示软件业在促进信息消费.提升社会 ...