Android的面向组件思想
http://blog.csdn.net/luoxinwu123/article/details/8019547
面向组件思想是在软件规模扩大,复杂度上升的背景下,以面向对象为基础而提出的一种软件设计思想。可以把它理解为一种更粗粒度的面向对象,其粒度一般大于对象,但具体要到什么程度,又可以根据实际情况来决定。这种思想以组件为基础,强调“服务”的概念。
面向组件具有以下特点:
低耦合性:组件之间一般互不依赖,一个组件只需要知道另一个组件的“名字”就可以访问它;
高重用性:系统级的重用;
高互操作性:不同的开发商开发出来的组件只要定义好了接口就可以互相访问;
进程的透明性:组件可以工作在同一个进程也可以工作在不同的进程;
语言和开发环境的独立性:组件只需要定义好服务接口,内部实现可以采用任何语言。
面向组件的框架已经有很多了,如JavaBean、EJB、COM等。Android系统并没有声称自己是面向组件的,但从其设计思想来看,Android一开始的设计考虑就是要采用一种“无边界”的设计方式,要实现系统内资源高度的重用。
事实上,Android完全符合面向组件的特征。首先,Android提供了Activity、Service、BroadcastReceiver和ContentProvider四大组件。这四大组件之间的协作是通过Binder机制和来协作的,其中ServiceManager与ActivityManagerService是保证组件间协同工作的最重要的基础,同时它们本身也是一种组件。ServiceManager是Binder的守护进程,用来管理各种服务,并向调用这些服务的客户提供查询远程接口的功能。而ActivityManagerService负责所有Activity和Service的启动,另外还负责系统中所有广播的注册和发布以及把广播发送给接收者。
有了这个机制,Android各个组件之间实现了低耦合,Activity与Activity、Activity与Service、Service与Service之间的都只需知道对方的“名字”就可以访问它。而且,它们之间的重用是系统级的,尤其是Service,任何部署在系统里的Service可以为任何一个应用,任何一个进程,任何一个组件来提供服务。它也满足高互操作性,任何开发者开发出来的组件,只要公布其接口就可以为其他开发者所用。Android对进程完全透明,取而代之的,在Android里,一般用Task的概念来作为应用的边界,一个Task可以是单个进程也可以是多个进程。Activity与Service的协作既可以在同一个进程又可以在不同进程完成。如,启动Activity的startActivity函数,如果新Activity配置了android:process这个属性,那么,它就会运行在另一个进程中 ,否则运行在同一进程中。而启动Service的方式有两种,如下:
startService:运行在不同进程;
bindService:运行在统一进程。
启动过程都是通过binder机制来通知ActivitManagerService来决定是否要新建一个进程,并启动新的Activity或Service。
Android的面向组件思想的更多相关文章
- Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系
Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...
- Android背后的设计思想——功能共享机制
Android的系统设计,与别的智能手机操作系统有很大区别,甚至在以往的任何操作系统里,很难找到像Android这样进行全面地系统级创新的操作系统.从创新层面上来说,Android编程上的思想和支持这 ...
- 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)
http://blog.csdn.net/hjf19790118/article/details/6919265 1.什么是面向对象编程(Object-Oriented Programming)? 面 ...
- Android消息传递之组件间传递消息
前言: 上篇学习总结了Android通过Handler消息机制实现了工作线程与UI线程之间的通信,今天来学习一下如何实现组件之间的通信.本文依然是为学习EventBus做铺垫,有对比才能进步,今天主要 ...
- Android的四大组件之Activity
Android的四大组件之Activity Activity:是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,B ...
- android中四大组件之间相互通信
好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...
- Android四大基本组件介绍与生命周期
Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...
- Android开发之 Android 的基本组件的概述
Android是一个为组件化而搭建的平台,它的应用是由一些零散的有联系的组件组成,并通过AndroidManifest.xml文件 把它们绑定起来. Android常用的组件有: Activity(活 ...
- Android的四大组件
Android的四大组件:Activity.Service.BroadcastReceiver.Content Provider. Content Provider 属于Android应用程序的组件之 ...
随机推荐
- Java集合之HashSet源码分析
概述 HashSet是基于HashMap来实现的, 底层采用HashMap的key来保存数据, 借此实现元素不重复, 因此HashSet的实现比较简单, 基本上的都是直接调用底层HashMap的相关方 ...
- git常用命令以及如何与fork别人的仓库保持同步
简单常用命令1.git status查看当前仓库是否有文件改动a:提示Your branch is up-to-date with 'origin/master'.nothing to commit, ...
- vue自制switch滑块
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python shelve
shelve模块只有一个open函数,返回类似字典的对象,可读可写; key必须为字符串,而值可以是python所支持的数据类型. import shelve f = shelve.open('SHE ...
- 【读书笔记】iOS-成为一名开发者
iOS开发者计划是按年付费的,在过期前60天可以开始续费.如果你不续费的话,你将无法发布应用.另外苹果会吊销你的开发者证书和发布证书.最后,苹果将你在iTunes App Store上的所有应用下架. ...
- SAP 官网中文帮助文件&BP中文资料汇总
系统 描述 版本 连接 SAP ME 制造执行 SAP Manufacturing Execution (SAP ME) 15.0 点击我 SAP ECC EHP6 财务部分 SAP ERP 6.0 ...
- loadrunner 场景设计-学习笔记之性能误区
场景设计-学习笔记之性能误区 by:授客 QQ:1033553122 场景假设: 每个事务仅包含一次请求,执行10000个并发用户数 性能误区: 每秒并发用户数=每秒向服务器提交请求数 详细解答: 每 ...
- Kotlin入门(4)声明与操作数组
上一篇文章介绍了基本变量类型在Kotlin中的用法,不过这只针对单个变量,如果要求把一组相同类型的变量排列起来,形成一个变量数组,那又该如何声明和操作呢? 在Java中声明数组,跟在C语言中声明是一样 ...
- Fragment 中 ListView绑定ContextMenu
package com.example.administrator.imbobo.controller.fragment; import android.content.BroadcastReceiv ...
- springboot中使用mybatis显示执行sql
springboot 中使用mybatis显示执行sql的配置,在properties中添加如下 logging.你的包名=debug 2018-11-27 16:35:43.044 [DubboSe ...