从多方面理解 Android 体系结构

Android作为一个为当前手机系统市场带来新的活力的具有空前生命力的移动操作系统,其成功有其必然性,它定是集众高人的智慧,具有说也说不完的优点所在。

若想真正了解它,掌握它,肯定需要一个不断深入学习的过程,这里不防先从下面几个角度来理解Android系统的优点。


一、以分层的方式来看Android


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

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

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

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

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

4)、Applications:该层是Java的应用程序层,Android内置的Google Maps、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. * 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的源代码,就会发现设计模式无处不在了,呵呵。


四、以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 VM, android平台的一个虚拟机,它相当于PCJava的虚拟机JVM


四、操作系统(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应用开发少走弯路。


学习一门知识, 先要会用, 再会灵活用, 接着会深入学习和理解.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值