android Broadcast 总结
1, 生命周期
在android官方文档中,推荐我们在onResume中进行 registerReceiver, 在onPause中进行unRegisterReceiver。 他们给出的理由是:
If registering a receiver in your Activity.onResume() implementation, you should unregister it in Activity.onPause().
(You won't receive intents when paused, and this will cut down on unnecessary system overhead). Do not unregister in Activity.onSaveInstanceState(), because this won't be called if the user moves back in the history stack.
2,有序广播和无序广播的差别
广播接收者(BroadcastReceiver)用于监听系统事件或应用程序事件,通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()能够向系统发送广播意图,通过广播一个意图(Intent)能够被多个广播接收者所接收,从而能够在不用改动原始的应用程序的情况下,让你对事件作出反应。
当中Context.sendBroad()主要是用来广播无序事件(也被称为有序广播 Normal broadcast),即全部的接收者在理论上是同一时候接收到事件。同一时候运行的,对消息传递的效率而言这是比較好的做法。而Context.sendOrderedBroadcast()方法用来向系统广播有序事件(Ordered broadcast),接收者依照在Manifest.xml文件里设置的接收顺序依次接收Intent。顺序运行的,接收的优先级能够在系统配置文件里设置(声明在intent-filter元素的android:priority属性中,数值越大优先级别越高,其取值范围为-1000到1000。当然也能够在调用IntentFilter对象的setPriority()方法进行设置)。对于有序广播而言,前面的接收者能够对接收到得广播意图(Intent)进行处理。并将处理结果放置到广播意图中,然后传递给下一个接收者,当然前面的接收者有权终止广播的进一步传播。假设广播被前面的接收者终止后,后面的接收器就再也无法接收到广播了。
3, 持久广播 sendStickyBroadcast
sticky 类型的广播会保存 上次广播的intent, 仅仅要你注冊到这个广播, 就能够直接获得上次的intent 。(直到removeStickyBroadcast 该广播)
Perform a sendBroadcast(Intent) that is "sticky," meaning the Intent you are sending stays around after the broadcast is complete, so that others can quickly retrieve that data through the return value of registerReceiver(BroadcastReceiver, IntentFilter).
In all other ways, this behaves the same as sendBroadcast(Intent).
You must hold the BROADCAST_STICKY permission in order to use this API. If you do not hold that permission,SecurityException will be thrown.
大概的意思是说: 发出的广播会一直滞留(等待),以便有人注冊这则广播消息后能尽快的收到这条广播。其它功能与sendBroadcast同样。可是使用sendStickyBroadcast 发送广播须要获得BROADCAST_STICKY permission,假设没有这个permission则会抛出异常。
而有序类型的广播。则不会保存intent, 假设当时没得到intent,则以后也得不到。
4, 广播生命周期
每次广播到来时 , 会又一次创建 BroadcastReceiver 对象 , 而且调用 onReceive() 方法 , 运行完以后 , 该对象即被销毁 . 当 onReceive() 方法在 10 秒内没有运行完成, Android 会觉得该程序无响应。
android Broadcast 总结的更多相关文章
- android Broadcast介绍
在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制.而BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件.发送Broadca ...
- Android Broadcast Receiver 使用入门
Broadcast Receiver 的使用 1.Broadcast Receiver简介 2.Broadcast Receiver接收系统自带的广播 3.自 ...
- Android Broadcast Receiver注册
之前有关 Broadcast Receiver的链 动态注册 1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onRece ...
- Android——Broadcast Receive 相关知识总结贴
Android系统中的广播(Broadcast)机制简要介绍和学习计划 http://www.apkbus.com/android-99858-1-1.html android----BroadCas ...
- Android -- Broadcast接收
Broadcast是Android四大组件之一,是一种广泛运用的在应用程序之间传输信息的机制.最经典的举例是: “我们拿广播电台来做个比方.我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特 ...
- Android Broadcast Security(转)
原文地址:http://drops.wooyun.org/tips/4393 0x00 科普 Broadcast Recevier 广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件.很多广 ...
- Android Broadcast Receive
Broadcast Receive 广播接收(Broadcast Receive)为android的四大组件之一.主要用于监听广播消息,并做出响应.与应用程序中监听事件相比而言,该监听事件为全局监听. ...
- android Broadcast广播消息代码实现
我用的是Fragment , 发送写在一个类中,接收写在另外一个类的内部类中.代码动态实现注册. 代码: myReceiver = new zcd.netanything.MyCar.myReceiv ...
- Android Broadcast Receiver
说明 有时候我们在做android系统软件的时候,经常会需要做的事就是开机重新设置上次关机前的状态,当然,我们就会用到这个开机广播: <uses-permission android:name= ...
随机推荐
- BZOJ1079 [SCOI2008]着色方案 【dp记忆化搜索】
题目 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块. 所有油漆刚好足够涂满所有木块,即c1+c2+-+ck=n.相邻两个木块涂相同色显得很难看 ...
- 基于类的通用视图(Class-based generic views)
在web开发中,最令人头痛的就是一遍又一遍的重复固定的模式.在解决了模板层面和模型层面的重复代码之痛之后,Django使用通用视图来解决视图层面的代码重复. 扩展通用视图 毫无疑问通用视图可以大幅度地 ...
- js得到时间戳(10位数)
//从1970年开始的毫秒数然后截取10位变成 从1970年开始的秒数 function timest() { var tmp = Date.parse( new Date() ).toString( ...
- C# 代码片段
StringBuilder拼接小技巧 Stopwatch watch = new Stopwatch(); watch.Start(); var sb = new StringBuilder(); ; ...
- 【SSH原理】ssh用法及命令
什么是SSH? Secure Shell 安全外壳协议 简单说,SSH是一种网络协议,用于 计算机之间的加密登录.如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登 ...
- python xpath 基本用法
转自:http://www.pythoner.cn/home/blog/python-xpath-basic-usage/ Pyer发现 业界资讯 相册 第7期:Pythoner技术交流沙龙 关于我们 ...
- python--traceback模块
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat # 异常处理在python中已经屡见不鲜了,我们不仅可以处理异常,也可以将 ...
- jQuery简单操作HTML的DOM
#转载请留言联系 如果需要了解什么是HTML的dom,可以参考:http://www.w3school.com.cn/htmldom/index.asp 下面的是jQuery操作DOM,并不是Java ...
- 或许你不知道的10条SQL
一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...
- Selenium2+python自动化5-操作浏览器基本方法【转载】
前言前面已经把环境搭建好了,这从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是w ...