在Android系统中,为什么需要广播机制呢?广播机制,本质上它就是一种组件间的通信方式,如果是两个组件位于不同的进程当中,那么可以用Binder机制来实现,如果两个组件是在同一个进程中,那么它们之间可以用来通信的方式就更多了,这样看来,广播机制似乎是多余的。然而,广播机制却是不可替代的,它和Binder机制不一样的地方在于,广播的发送者和接收者事先是不需要知道对方的存在的,这样带来的好处便是,系统的各个组件可以松耦合地组织在一起,这样系统就具有高度的可扩展性,容易与其它系统进行集成。

在软件工程中,是非常强调模块之间的高内聚低耦合性的,不然的话,随着系统越来越庞大,就会面临着越来越难维护的风险,最后导致整个项目的失败。Android应用程序的组织方式,可以说是把这种高内聚低耦合性的思想贯彻得非常透彻,在任何一个Activity中,都可以使用一个简单的Intent,通过startActivity或者startService,就可以把另外一个Activity或者Service启动起来为它服务,而且它根本上不依赖这个Activity或者Service的实现,只需要知道它的字符串形式的名字即可,而广播机制更绝,它连接收者的名字都不需要知道。

不过话又说回来,广播机制在Android系统中,也不算是什么创新的东西。如果读者了解J2EE或者COM,就会知道,在J2EE中,提供了消息驱动Bean(Message-Driven Bean),用来实现应用程序各个组件之间的消息传递;而在COM中,提供了连接点(Connection Point)的概念,也是用来在应用程序各个组间间进行消息传递。无论是J2EE中的消息驱动Bean,还是COM中的连接点,或者Android系统的广播机制,它们的实现机理都是消息发布/订阅模式的事件驱动模型,消息的生产者发布事件,而使用者订阅感兴趣的事件。

摘自:http://blog.csdn.net/luoshengyang/article/details/6730748

最新文章

  1. C++远征之封装篇(下)
  2. 疯狂java学习笔记之面向对象(四) - this关键字
  3. 配置NAT回流导致外网解析到了内网IP
  4. ExtJS笔记4 容器与布局(Layouts and Containers)
  5. iOS设计模式——Category
  6. Swiper API
  7. sql server varchar和nvarchar的区别
  8. 如何发送HTML表单数据
  9. Private Members in JavaScript
  10. C# ReferenceEquals(), static Equals(), instance Equals(), 和运算行符==之间的关系
  11. C语言随笔_区分=与==
  12. 基于visual Studio2013解决C语言竞赛题之1030计算函数
  13. 雅虎WEB前端网站优化 -- 34条军规
  14. MicroPython-GPS教程之TPYBoardv702控制5110显示当前经纬度
  15. linux下配置docker和splash(图文)
  16. Java 多线程 并发和并行
  17. 实现两个矩阵相乘的C语言程序
  18. 前端笔记 (3.JavaScript 1)
  19. Python: 用shell通配符匹配字符串,fnmatch/fnmatchcase
  20. HDU-1272 小希的迷宫 (并查集、判断图是否为树)

热门文章

  1. 在Windows下安装MongoDB
  2. tera term通过ttl脚本 自动连接服务器(转自http://www.cnblogs.com/wxb0328/p/teraterm.html)
  3. Ubuntu连接多台Ubuntu server的问题
  4. js中startWith、endWith 函数不能在任何浏览器兼容的问题
  5. java基础16 捕获、抛出以、自定义异常和 finally 块(以及关键字:throw 、throws)
  6. Linux中常用命令 <一>
  7. socket-----爬虫&&文件传输
  8. beego学习笔记(4):开发文档阅读(3)
  9. 新版Java为什么要修改substring的实现
  10. MYSQL-----流程控制 if() 函数的用法