`
qilixiang012
  • 浏览: 200731 次
文章分类
社区版块
存档分类
最新评论

从多方面理解 Android 体系结构

 
阅读更多

从多方面理解Android体系结构

原文:http://blog.csdn.net/java211/archive/2011/01/26/6164004.aspx

Android作为一个为当前手机系统市场带来新的活力的具有空前生命力的移动操作系统,其成功有其必然性,它定是集众高人的智慧,具有说也说不完的优点所在。若想真正了解它,掌握它,肯定需要一个不断深入学习的过程,这里不防先从下面几个角度来理解Android系统的优点。

一、以分层的方式来看Android

首先看一下官方关于Android体系结构的图:

相信大家对上面这个图都见过很多次了,甚至已经印在脑中了,这里我也不详细赘述了,只是简单描述一下;

1)、LinuxKernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。

2)、Libraries和AndroidRuntime:Libraries:即C/C++函数库部分,大多数都是开放源代码的函数库,例如WebKit,该函数库负责Android网页浏览器的运行,例如标准的C函数库Libc、OpenSSL、SQLite等,当然也包括支持游戏开发2DSGL和3DOpenGL|ES,在多媒体方面有MediaFramework框架来支持各种影音和图形文件的播放与显示,例如MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等众多的多媒体文件格式。Android的Runtime负责解释和执行生成的Dalvik格式的字节码。

3)、ApplicationFramework:(应用软件架构),Java应用程序开发人员主要是使用该层封装好的API进行快速开发。

4)、Applications:该层是Java的应用程序层,Android内置的GoogleMaps、E-mail、即时通信工具、浏览器、MP3播放器等处于该层,Java开发人员开发的程序也处于该层,而且和内置的应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。

优点:上面四个层次中,下层给上层服务,上层支持下层支持,调用下层的服务,这种严格的分层机制,为Android系统带来很大的灵活性,稳定性和可扩展性。也利于不同层的开发人员专心于该层次的开发任务。

二、以MVC模式来看Android结构

这里还是拿官方的一个图来简单说明一下Android系统中所蕴藏的MVC模式:

MVC的概念相信凡是做过软件的人都会接触到这个理念,即Model、View、Controller三层结构。

1)、模型(Model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。

2)、视图(View)对象:是应用程序中负责生成用户界面的部分。也是在整个MVC架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。注意这里只简单负责与用户交互相关的任务。

3)、控制器(Control)对象:是根据用户的输入,控制用户界面数据显示及更新Model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交给M哦得了处理。

在Android里MVC模式体现在:

模型层(Model):对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在的该层的。

视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入,(当然,如何你对Android了解的比较的多了话,就一定可以想到在Android中也可以使用JavaScript+HTML等的方式作为View层,当然这里需要进行Java和JavaScript之间的通信,幸运的是,Android提供了它们之间非常方便的通信实现。)

控制层(Controller):Android的控制层的任务主要是由众多的Acitvity的实现,这句话也就暗含了不要在Acitivity中写代码,要通过Activity交给Model业务逻辑层处理,这样做的另外一个原因是Android中的Acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

三、以常见的设计模式来理解Android

Android的应用开发是基于面向对象的JAVA语言,要想发挥面向对象的优势,免不了要使用常见的设计模式,Android系统在这点上也不例外,也不排除它在这方面会有过人之处,不然Android系统会那么受欢迎。

常用的设计模式有:

  1. *TemplateMethod模式
  2. *FactoryMethod模式
  3. *Observer模式
  4. *AbstractFactory模式
  5. *Adapter模式
  6. *Composite模式
  7. *Strategy模式
  8. *State模式
  9. *Proxy模式
  10. *Bridge模式
  11. *Iterator模式
  12. *Mediator模式
  13. *Façade模式

如果有精力阅读Android的源代码,就会发现设计模式无处不在了,呵呵。

四、以IOC(控制反转)的思想来理解Android

IOC控制反转的另一个名字就是依赖注入,简单的说就是将对象、组件以及服务之间的依赖分离开,通常采用配置文件或回调的方式在开发时分离,使其相对独立,在运行时由容器(这里就是指Android的框架)来根据实际需要来将相关的依赖关系注入到相应的对象、组件中。

在Android中常见是例如Activity的常用函数Oncreate()方法,通俗地说就是你不用来找我,我会来找你的。在开发时对这个软件层次更容易理解,专注于关键的几个地方,大大提高了开发效率。

android体系架构

原文来源:http://www.cnblogs.com/vaiyanzi/archive/2010/05/15/1736280.html


android平台大的方面的层次可以划分成三个层次,包括一个操作系统,中间件和应用程序,android的系统框架图如下:

图中的软件层次自上而下分成4个层次

应用程序(Application

用用程序框架(Application Framework

各种类库(Libraries)和android运行时(Adnorid Runtime

操作系统(OS

.应用程序(Application

应用层是和用户交互的一个层次,用户可以看得见的一些应用,用户可以操作。这类应用基本都是通过Java语言编写的独立的能够完成某些功能的应用程序。Android本身提供了桌面(Home),联系人(Contacts),拨打电话(Phone),浏览器(Browers)等很多基本的应用程序。开发人员可以使用应用框架提供的API编写自己的应用程序,普通开发人员要做的事情就是开应用层的程序提供该广大消费者使用。

.应用程序框架(Application Framework

普通开发者可以使用Android基本应用程序使用的系统APIandroid应用框架中的各个模块都可以被复用,各种服务也可以被复用,理解了这个机制,开发人员可以更好的更轻松的开发出优秀的android应用。开发过程中常用到的基本框架组件如下:

一组ViewUI组件),这些UI组件包括Button(按钮),EidtView(文本框),TextView(标签),List(列表)等等,灵活运用这些组件可以快速方便的创建良好的用户交互界面。

Content Providers(内容提供者),听起来有点抽象,通俗的理解Content Provider就是提供一种服务,通过这种服务应用程序之间可以实现数据的互相访问和共享,比如通讯录的存储就使用了这种服务,其它应用也可以访问通讯录中存储的联系人信息。

Resource Manager顾名思义就是资源管理,android中的资源很多包括图片,用户界面(Layout xml),字体,颜色,UI组件的Id等等都可以称之为资源,这些丰富的资源,都是通过Resource Manager来统一进行管理。

Notification Manager(消息通知管理),它在不影响用户正常操作和使用设备的时候在状态栏上提供消息的提示。比如有短信来的时候,android自动会将这个消息提示在状态栏上,用户可以及时的看到。

Activity Manager(活动管理),Activity管理着应用程序的生命周期,并且控制着应用的导航,扮演控制器的角色。每个Activity类似于Windows应用中的一个wendow。一般的应用都是通过一个个Activity交互构成的。

Window Manager(窗口管理),管理所有启动的窗口。

Location Manager(位置管理),用来管理地图服务的相关功能。

Telephoney Manager(电话管理),用来管理有关的电话的相关功能。

Package Manager(包管理),管理所有的安装在android系统内的应用程序。

.库(Libraries)和运行环境(RunTime)

这部分内容开始涉及底层,开发普通的应用不会直接对这个层进行操作。这层中包含了一组类库(Libraries)和运行时(RunTime),系统C库(libc),一个从BSD集成来的标准C系统函数库(libc)它是专门为基于嵌入式Linux的设备定制的。

媒体库(Media Framework),基于PackeVideo OpenCore,该库支持多种常用的音频,视频格式以及回放和录制,同时支持静态图像文件。编码格式包括:MPEG4H.264MP3AACAMRJPGPNG

Surface Manager对显示子系统的管理,并且为多个应用提供2D3D图层的无缝融合。

WebKit,一个最新的web浏览器引擎,用来支持Andiroid浏览器或者嵌入的web视图。

SGL底层的2D图形引擎。

OPENGL|ES,基于OpenGL ES 1.0 APIs实现,该库可以使用硬件3D加速或者使用高度优化的3D软加速。

FreeType,位图(bitmap)和适量(vector)字图显示支持。

SQLite,一个对所有应用程序可用,功能强大的轻量级关系型数据库引擎。

Core Libraries该核心库提供了Java编程语言核心库的大多数功能。

Dalvik VMandroid平台的一个虚拟机,它相当于PCJava的虚拟机JVM

四、操作系统(OS

Android的核心系统服务依赖于Linux 2.6内核,操作系统为Android提供的服务包括:

安全性(Security)

内存管理(Memory Management)

进程管理(Process Management)

网络堆栈(Network Stack)

驱动程序模型(Driver Model)包含以下这些常规的驱动程序:

  1. (1)DisplayDriver
  2. (2)KeypadDriver
  3. (3)CameraDriver
  4. (4)WiFiDriver
  5. (5)FlashMemoryDriver
  6. (6)AudioDriver
  7. (7)Binder(IPC)Driver
  8. (8)PowerManagement

android的整体框架有一定的了解后对与理解android的一些机制和应用开发有很大的帮助,只有了解了android框架才能更好的使用android提供的功能和服务。从而使学习android应用开发少走弯路。


分享到:
评论

相关推荐

    《Google Android开发入门与实战》.pdf

    6.1 android体系结构介绍 57 6.1.1 应用程序(application) 57 6.1.2 应用程序框架(application framework) 58 6.1.3 库(libraries)和运行环境(runtime) 58 6.2 android 应用程序组成 59 6.2.1 ...

    Google.Android开发入门与实战

    6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework) 6.1.3 库(Libraries)和运行环境(RunTime) 6.2 Android应用程序组成 6.2.1 Activity介绍 6.2.2 ...

    FragmentLifecycleToybox:提供一个控制面板以播放片段(在片段管理器中创建,添加或从替换中删除等)

    可安装的APK二进制文件以及包括用法,功能集,体系结构和实现在内的其他信息都可以在上获得。 另请参见 。 动机 片段可以说是Android开发中最令人困惑的方面。 不幸的是,有许多原因。 结果,即使在各种论坛(例如...

    《程序员》杂志2012年第1期.pdf (免费积分下载)

    我们最熟悉的是技术平台(或称开发平台、计算平台),指软件应用能够在其上运行的软件和硬件环境,硬件体系结构、操作系统、API、运行库、编程框架等都是常见的平台。随着Web的普及,浏览器及其插件如Flash和...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    JAVA上百实例源码以及开源项目源代码

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包7

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包9

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包101

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics