安卓广播之理论篇

原创 2015年07月07日 22:17:40
------------------
什么叫广播?
-----------------
【比如】
在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,
应用程序开发者也可以监听这些广播并做出程序逻辑的处理

----------------------------
Android广播的分类
----------------------------
1、 普通广播:(Normal broadcasts)
依次传递给各个处理器去处理
完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到
【优点】消息传递的效率比较高
【缺点】接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播

2、 粘性消息:
粘性消息在发送后,一直存在于系统的消息容器里面,
等待对应的处理器去处理
如果暂时没有处理器处理这个消息则一直在消息容器里面处于等待状态。

3、 有序广播:(Ordered broadcasts)

按照处理器的不同优先级来区分的。

【特点】
  1.高优先级的处理器会优先截获这个消息,并且可以将这个消息删除。
  2.按照接收者声明的优先级别(声明在intent-filter元素的android:priority属性中,数越大优先级别越高,取值范围:-1000到1000。也可以调用IntentFilter对象的        setPriority()进行设置),被接收者依次接收广播。
【例如】
  A的级别高于B,B的级别高于C,那么,广播先传给A,再传给B,最后传给C。
          A得到广播后,可以往广播里存入数据,当广播传给B时,B可以从广播中得到A存入的数据。
【Code】
  Context.sendOrderedBroadcast()    // 发送的是有序广播

  BroadcastReceiver.abortBroadcast()           // 系统会根据接收者声明的优先级别按顺序逐个执行接收者,

前面的接收者有权终止广播,如果广播被前面的接收者终止,后面的接收者就再也无法获取到广播。

  setResultExtras(Bundle)       // 前面的接收者可以将处理结果存放进结果对象,然后传给下一个接收者
  Bundle bundle =getResultExtras(true)         // 获取上一个接收者存入在结果对象中的数据

【搞笑的做法】

系统收到短信,发出的广播属于有序广播。如果想阻止用户收到短信,可以通过设置优先级,

让你们自定义的接收者先获取到广播,然后终止广播,这样用户就接收不到短信了。

【案例分析】

一个经典的电话黑名单,首先通过将黑名单号码保存在数据库里面,

当来电时,我们接收到来电广播并将黑名单号码与数据库中的某个数据做匹配,如果匹配的话则做出相应的处理,比如挂掉电话、比如静音等等。。

【注意】
    普通广播和粘性消息不能被截获

    有序广播是可以被截获的

--------------------------
处理器的注册分类
--------------------------
1、 函数代码动态的方式注册
    用代码动态的销毁
    每次用来处理消息的就是同一个实例对象  --- 这样的速度就变快了么??

2、 在配置文件里面静态注册,静态注册有个特点,那就是一旦注册就会一直存在于系统里面,无论应用是否关闭或开关机。(简直就是一个流氓软件病毒啊~)。
    静态注册每处理消息一次,系统new一个处理器处理,并销毁




















前端面试题目搜集

前端面试题目搜集 一、理论知识 1.1、讲讲输入完网址按下回车,到看到网页这个过程中发生了什么 a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d...
  • u012099645
  • u012099645
  • 2015年12月01日 10:41
  • 1337

51822模拟ble广播-理论

http://blog.chinaunix.net/uid/28852942/cid-219646-list-1.html 这讲教程介绍如何使用51822的radio部分来模拟实现ble广播功能...
  • lilifang_2011
  • lilifang_2011
  • 2017年06月06日 10:35
  • 144

三层架构理论篇

三层架构的学习,是我们从思想上发生转变的一个过渡阶段。老规矩,开始学习三层架构之前,我们首先要弄明白一些基础的理论知识,例如什么是三层架构,为什么会有三层架构,为什么要学习或者为什么要用三层架构?带着...
  • u010773667
  • u010773667
  • 2014年03月29日 11:14
  • 1240

三层架构理论篇

对于三层架构的理论阐述,我将从三个大的方面去讨论:what、why和how,说白了也就是以三层架构为中心,去了解什么是三层,为什么用三层以及怎么用三层这个三个问题。OK,废话不多说,进入正题。    ...
  • u010929604
  • u010929604
  • 2014年06月05日 20:56
  • 1564

WorkFlow之理论篇

工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档、信息或任务能够在不同的执行者之间进行传递与执行。...
  • wangdan199112
  • wangdan199112
  • 2015年03月31日 15:24
  • 1321

详解DNS(理论篇)

对于 DNS(Domain Name System) 大家肯定不陌生,不就是用来将一个网站的域名转换为对应的IP吗。当我们发现可以上QQ但不能浏览网页时,我们会想到可能是域名服务器挂掉了;当我们用别人...
  • sunansheng
  • sunansheng
  • 2015年11月15日 22:10
  • 4970

运算符的重载(理论篇)

           1.C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运...
  • qq_32744005
  • qq_32744005
  • 2016年07月23日 18:38
  • 513

【微服务】——理论篇

概念      简而言之,microservice架构风格是一种方法来开发一个应用程序套件的小服务,每个运行在它自己的进程,与轻 量级通信机制,通常一个HTTP资源API。这些服务是建立在业务能...
  • u011626283
  • u011626283
  • 2017年04月09日 21:34
  • 316

MyBatis之理论篇

打法是否大地方日期为人情味儿
  • gaibian0823
  • gaibian0823
  • 2015年10月30日 18:09
  • 391

回音消除之一理论篇

一、前言 因为工作的关系,笔者从2004年开始接触回声消除(Echo Cancellation)技术,而后一直在某大型通讯企业从事与回声消除技术相关的工作,对回声消除这个看似神秘、高端和难以理解的技...
  • xidianzhimeng
  • xidianzhimeng
  • 2014年04月01日 09:32
  • 1165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓广播之理论篇
举报原因:
原因补充:

(最多只允许输入30个字)