Android广播(Broadcast)
Android广播(Broadcast)
一、Broadcast简介
Broadcast是android中的四大组件之一,是在组件之间传播数据(Intent)的一种机制。广播的发送者和接收者事先是不需要知道对方的存在的。这样带来的好处便是,系统的各个组件可以松耦合地组织在一起,这样系统就具有高度的可扩展性,容易与其它系统进行集成。
广播具有以下特性:
1.广播接收者的生命周期是非常短暂的,在接收到广播的时候创建,onReceive()方法结束之后销毁
2.广播接收者中不要做一些耗时的工作,否则会弹出Application No Response错误对话框
3.最好也不要在广播接收者中创建子线程做耗时的工作,因为广播接收者被销毁后进程就成为了空进程,很容易被系统杀掉
4.耗时的较长的工作最好放在服务中完成
二、Broadcast的分类
1. 普通广播(自定义广播)
普通广播是完全异步的,通过Context的sendBroadcast()方法来发送,通过onReceive方法接收。消息传递效率比较高,但所有receivers(接收器)的执行顺序不确定。缺点在于:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播,直到没有匹配的接收器广播时才能停止传播。
2. 系统广播
Android中内置了多个系统广播:只要涉及到手机的基本操作(如开机、网络状态变化、拍照等等),都会发出相应的广波,每个广播都有特定的Intent - Filter(包括具体的action),android常用系统广播action如下:
3.有序广播(Ordered Broadcast)
Android中的有序广播,也是一种比较常用的广播,该种类的广播用sendOrderedBroadcast发送。该广播主要有以下特性:
- 按照接收者的优先顺序来接收广播,优先级别在intent-filter中的priority中声明,-1000到1000之间,值越大优先级越高,
- 可以终止广播的继续传播,接受者可以修改intent的内容。
- 同级别接收顺序是随机的,级别低的后收到
- 能截断广播的继续传播,高级别的广播接收器接收广播后能决定时候截断。能处理广播
- 同级别动态注册高于静态注册
4. 粘性广播(Sticky Broadcast)
粘性广播的特点是Intent会一直保留到广播事件结束,而这种广播也没有所谓的10秒限制,10秒限制是指普通的广播如果onReceive方法执行时间太长,超过10秒的时候系统会将这个广播置为可以干掉的candidate,一旦系统资源不够的时候,就会干掉这个广播而让它不执行。该广播用sendStickyBroadcast发送。
5. App应用内广播(Local Broadcast)
因为android中的广播是可以跨域的(跨App),因此可能存在一下问题:其他App针对性发出与当前App intent-filter相匹配的广播,由此导致当前App不断接收广播并处理;其他App注册与当前App一致的intent-filter用于接收广播,获取广播具体信息; 即会出现安全性和效率性的问题。
对于上述情况就出现了这种广播,App应用内广播可理解为一种局部广播,广播的发送者和接收者都同属于一个App。相比于全局广播(普通广播),App应用内广播优势体现在:安全性高效率高。
三、BroadcastReceiver
BroadcastReceiver是一种可以让用户接受广播通知且没有用户界面的组件,在android系统中为了响应不同的事件通知,应用程序可以注册不同的BroadcastReceiver,当BroadcastReceiver接受到通知后可以启动Activity作为响应或者通过NotificationManager提醒用户。
对于不同注册方式的广播接收器回调OnReceive(Context context,Intent intent)中的context返回值是不一样的:
- 对于静态注册(全局+应用内广播),回调onReceive(context, intent)中的context返回值是:ReceiverRestrictedContext;
- 对于全局广播的动态注册,回调onReceive(context, intent)中的context返回值是:Activity Context;
- 对于应用内广播的动态注册(LocalBroadcastManager方式),回调onReceive(context, intent)中的context返回值是:Application Context。
Android广播(Broadcast)相关推荐
- Android 广播(Broadcast)
Android 广播Broadcast 1.小声嘀咕 2.广播机制简介 3.接收系统广播 3.1动态注册 3.2静态注册 4.发送自定义广播 4.1标准广播 4.2有序广播 5.使用本地广播 1.小声 ...
- Android广播机制:Broadcast
转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广 ...
- Android之Broadcast, BroadcastReceiver(广播)
在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 活动(Activity) - 用于表现功能 服务(Service) - 相当 ...
- Android中的广播Broadcast详解
今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低.开机.锁屏等一些操作都会发送 ...
- Android 30. 广播-Broadcast(一)
为了便于进行系统级别的消息通知,Android 引入了Broadcast 机制. Android 中每个应用程序都可以对自己感兴趣的Broadcast 进行注册,其消息可能来自系统,也可能来自其他应用 ...
- android 广播解绑,Android四大组件之BroadCast
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Android四大组件之BroadCast 一.广播概述 Android应用可以从Android系统和其他Android ...
- Android 广播的生命周期
一:Android 广播的生命周期 一个广播接收者有一个回调方法:void onReceive(Context curContext, Intent broadcastMsg).当一 ...
- 品茗论道说广播(Broadcast内部机制讲解)
1 概述 我们在编写Android程序时,常常会用到广播(Broadcast)机制.从易用性的角度来说,使用广播是非常简单的.不过,这个不是本文关心的重点,我们希望探索得再深入一点儿.我想,许多人也不 ...
- Android中BroadCast与Activity之间的通信
在看本文之前,假设你对于Android的广播机制不是非常了解.建议先行阅读我转载的一篇博文:图解 Android 广播机制. 因为本案例比較简单,故直接在此贴出代码,不做过多的阐述. 先上效果截图: ...
最新文章
- ios app证书申请基本流程
- mybatis逆向工程生成的Example类的使用
- POJ1904 强联通(最大匹配可能性)
- reg怎样存取注册表信息
- 知乎用户行为预测数据比赛,10万奖金等你来Battle!
- echarts在.Net中使用实例(二) 使用ajax动态加载数据
- poj-2955-Brackets-区间DP
- 照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象
- 图解Kafka中的基本概念
- easyui-combobox实现placeholder提示效果
- 编译OpenJDK8:CoreLibraries.gmk:37/e_acos.obj/BuildJdk.gmk:70/Main.gmk:116/错误
- JAVA集合4(Map接口)
- 何凯明:Single Image Haze Removal Using Dark Channel Prior[CVPR 2009]
- 用python写一个爬取周杰伦所有歌词的爬虫
- 苹果手机显示没有连接服务器怎么办啊,苹果手机更新连接到服务器出现问题怎么办...
- 小学奥数公式大全 学习奥数必备“工具”
- openwrt多wan限上下行速脚本,基于qosv4,imq模块替换成ifb模块
- java 获取两个时间差_java如何获取两个日期的时间差
- linux解压gz.gz文件,linux解压tar.gz并重命名_linux解压tar.gz文件
- 越疆dobot机械臂_Dobot机械臂魔术师系类