android的四层体系结构,基于mvc三层结构浅析

从多方面理解Android体系结构html

 

1.以分层的方式来看Androidandroid

安卓体系结构分为四层。web

 

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

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

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

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

4)、Applications:该层是Java的应用程序层,Android内置的Google Maps、E-mail、即时通讯工具、浏览器、MP3播放器等处于该层,Java开发人员开发的程序也处于该层,并且和内置的应用程序具备平等的位置,能够调用内置的应用程序,也能够替换内置的应用程序。安全

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

 

 

2、以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,若是耗时的操做放在这里,程序就很容易被回收掉

 

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

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

经常使用的设计模式有:

 1 * Template Method模式  
 2 * Factory Method模式  
 3 * Observer模式  
 4 * Abstract Factory模式  
 5 * Adapter模式  
 6 * Composite模式  
 7 * Strategy模式  
 8 * State模式  
 9 * Proxy模式  
10 * Bridge模式  
11 * Iterator模式  
12 * Mediator模式  
13 * Façade模式 

 

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

 

4、以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基本应用程序使用的系统API,android 应用框架中的各个模块均可以被复用,各类服务也能够被复用,理解了这个机制,开发人员能够更好的更轻松的开发出优秀的android应用。开发过程当中经常使用到的基本框架组件以下:

一组View(UI 组件),这些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,该库支持多种经常使用的音频,视频格式以及回放和录制,同时支持静态图像文件。编码格式包括:MPEG四、H.264,MP三、AAC、AMR、JPG、PNG。

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

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

SGL 底层的2D图形引擎。

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

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

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

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

Dalvik VM, android平台的一个虚拟机,它至关于PC中Java的虚拟机JVM。

4、操做系统(OS

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

安全性(Security)。

内存管理(Memory Management)

进程管理(Process Management)

网络堆栈(Network Stack)

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

1 (1)Display Driver  
2 (2)Keypad Driver  
3 (3)Camera Driver  
4 (4)WiFi Driver  
5 (5)Flash Memory Driver  
6 (6)Audio Driver  
7 (7)Binder(IPC) Driver  
8 (8)Power Management  

 

 

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

相关文章
相关标签/搜索