《Android和PHP开发最佳实践》一2.2 Android系统框架

2.2 Android系统框架

在开始介绍Android应用开发之前,我们先来了解一下Android的系统框架。虽然,是否了解Android系统框架与能否进行Android应用开发之间没有任何必然的联系,但是在学习Android的过程中,这个部分内容却是必不可少的,因为能否理解Android的系统架构对于你日后能否对Android进行更深入的学习是至关重要的。首先,我们来看一张不得不说的图,也就是Google官方公布的Android的系统框架图,如图2-1所示。
从图2-1展示的Android系统架构图可以很清晰看出,Android系统分为四层:应用层、应用框架层、系统类库层和系统内核层。下面我们将对这四个层次做一些简要的分析和介绍。

  1. 应用层(Applications)
    应用层(Applications)是指运行于Android虚拟机上的程序,也就是开发者们平时开发的“手机应用”。在系统应用层里,我们可以通过Android提供的组件和API进行开发,从而编写出形形色色、丰富多彩的移动软件和游戏。
  2. 应用框架层(Application Framework)
    应用框架层(Application Framework)是Android应用开发的核心,为开发者开发应用时提供基础的API框架。当然,Android本身的很多核心应用也是在这层的基础上开发的。下面我们就来了解一下这些模块的作用(见表2-2)。

以上列出的模块都是我们在应用开发中经常用到的,大家可以先熟悉一下。其中最核心的Activity Manager和View System我们将分别在2.3节和2.7节中作详细介绍。此外,其他常用的Android模块的相关内容我们也会在本书以后的章节中穿插介绍。

  1. 系统类库层(Libraries)
    为了支持上层应用的运行,Android会通过系统类库层(Libraries)中的一些比较底层的C和C++库来支持我们所使用的各个组件或者模块。以下列举一些比较重要的类库的功能,这个部分大家了解即可。

Surface Manager:负责管理显示与存储之间的互动,以及对2D绘图和3D绘图进行显示上的合成。Android中的图形系统实际上采用的是C/S结构,Client端就是应用程序,而Server端是Surface Flinger,Client端通过Binder向Server端的Surface Flinger传输图像数据,最终由Surface Flinger合成到Frame Buffer中,然后在屏幕上显示出来。
Media Framework:Android的多媒体库,该库支持多种常见格式的音频和视频的播放、录制等各种操作,比如JPG、PNG、MPEG4、MP3、AAC、AMR等。
SQLite:Android自带的关系数据库,可用于存储复杂数据。
OpenGL/ES:3D效果库,主要用于3D游戏开发。
FreeType:支持位图、矢量、字体等。
WebKit:Android的Web浏览器内核(和iOS一样)。
SGL:2D图形引擎库。
SSL:安全数据通信支持。
Libc:也就是Bionic系统C库,当前支持ARM和x86指令集。该库非常小巧,主要用于系统底层调用,在NDK中经常会使用到。

  1. 系统内核层(Linux Kernel)
    Android内核具有和标准的Linux内核一样的功能,主要实现了内存管理、进程调度、进程间通信等功能。就最新的Android内核源码树的根目录结构来看,Android 内核源码与标准 Linux 内核并无不同;但是,经过与标准 Linux 内核源代码进行详细对比,可以发现Android内核与标准Linux内核在文件系统、进程间通信机制、内存管理等方面存在着不同。当然,了解它们之间的区别对进一步了解Android系统是有很大帮助的,下面我们从几个方面来分析两者之间的异同。

文件系统。不同于桌面系统与服务器,移动设备采用的大多不是硬盘而是 Flash 作为存储介质。因此,Android 内核中增加了标准 Linux 专用于 Flash 的文件系统 YAFFS2。YAFFS2 是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外断电对文件系统一致性和完整性的影响。经过测试证明,YAFFS2 性能比支持 NOR 型闪存的 JFFS2 文件系统更加优秀。YAFFS2对Nand-Flash芯片也有着良好的支持。
进程间通信机制。Android 增加了一种进程间的通信机制 IPC Binder。Binder 通过守护进程 Service Manager 管理系统中的服务,负责进程间的数据交换。各进程通过 Binder 访问同一块共享内存,以达到数据通信的机制。从应用层的角度看,进程通过访问数据守护进程获取用于数据交换的程序框架接口,调用并通过接口共享数据,而其他进程要访问数据,也只需与程序框架接口进行交互,方便了程序员开发需要交互数据的应用程序。
内存管理。在内存管理模块上,Android 内核采用了一种不同于标准 Linux 内核的低内存管理策略。Android 系统采用的是一种叫作 LMK(Low Memory Killer) 的机制,这种机制将进程按照重要性进行分级、分组,内存不足时,将处于最低级别组的进程关闭,保证系统是稳定运行的。同时,Android 新增加了一种内存共享的处理方式 Ashmem(Anonymous Shared Memory,匿名共享内存)。通过Ashmem,进程间可以匿名自由共享具名的内存块,这种共享方式在标准 Linux 当中也是不被支持的。
电源管理。由于 Android 主要用于移动设备,电源管理就显得尤为重要。不同于标准Linux内核,Android 采用的是一种较为简单的电源管理策略,通过开关屏幕、开关屏幕背光、开关键盘背光、开关按钮背光和调整屏幕亮度来实现电源管理,并没有实现休眠和待机功能。目前有三种途径判断调整电源管理策略:RPC调用、电池状态改变和电源设置。系统通过广播 Intent 或直接调用 API 的方式来与其他模块进行联系。电源管理策略同时还有自动关机机制,当电力低于最低可接受程度时,系统将自动关机。另外,Android 的电源管理模块还会根据用户行为自动调整屏幕亮度。
驱动及其他。相对于标准内核,Android 内核还添加了字符输出设备、图像显示设备、键盘输入设备、RTC 设备、USBDevice 设备等相关设备驱动,增加了日志(Logger)系统,使应用程序可以访问日志消息,使开发人员获得更大的自由。

时间: 2024-10-29 01:32:26

《Android和PHP开发最佳实践》一2.2 Android系统框架的相关文章

《Android和PHP开发最佳实践》一2.7 Android应用界面

2.7 Android应用界面 Android应用界面系统,即Android UI(User Interface)系统是Android应用框架最核心的内容之一,也是开发者们需要重点掌握的内容.如果我们把Android应用也分为前后端两部分的话,那么之前介绍的核心要点和四大组件等都属于后端,而Android UI系统则属于前端.后端保证应用的稳定运行,而前端则决定应用的外观和体验.对于一个优秀的Android应用来说,漂亮的外观和流畅的体验是必不可少的.接下来,我们便来学习Android外观系统的

《Android和PHP开发最佳实践》一2.10 Android开发环境

2.10 Android开发环境 前面我们已经学习了Android系统中最重要的基础概念的内容,那么接下来就要开始正式进入Android应用的实战开发阶段."工欲善其事,必先利其器",因此,我们先来熟悉Android应用的开发环境吧. Android应用的开发环境是基于Eclipse平台的,Eclipse的强大无需多说,它当然也适应于Windows XP.Mac OS.Linux等多种操作系统.另外,我们还需要安装一些必备的开发工具包,所需要的软件见表2-8. 2.10.1 开发环境的

《Android和PHP开发最佳实践》一1.3 如何学习Android和PHP

1.3 如何学习Android和PHP 前面我们已经讨论过"为何学"的问题,大家应该对Android加PHP这套应用开发解决方案有了大致的了解.接下来介绍"如何学"的问题,由于本书的内容比较广泛,既涉及客户端开发的技术也包含很多服务端开发的内容,所以在正式开始学习本书之前,先搞清楚应该使用什么样的学习方法比较有效是非常有必要的.接下来,笔者会把这个问题分解为以下几个部分来探讨. 1.3.1 如何学习Android 由于Android学习是本书最核心的内容,因此我们先

《Android和PHP开发最佳实践》一2.9 Android动画效果

2.9 Android动画效果 适当地使用动画效果可以很好地提升Android应用或游戏的操作体验.目前Android系统支持的动画效果主要有两种,即逐帧动画(Frame Animation)和补间动画(Tween Animation).虽然,在Android 3.0以后的版本中还引入了新的动画系统,但是目前最主流的动画效果还是这两种. 2.9.1 逐帧动画(Frame Animation) 逐帧动画类似于GIF动画图片,即按照顺序播放图片.我们通常会在Android项目的res/drawabl

《Android和PHP开发最佳实践》一2.3 Android应用框架

2.3 Android应用框架 前面介绍了Android的系统框架,主要目的是让大家对Android系统有整体的概念,也为日后更深入的学习打好基础.然而,目前我们更需要重点学习和掌握的则是Android的应用框架,因为是否能掌握和理解Android应用框架,直接关系到是否能学好Android应用开发. Android的应用框架是一个庞大的体系,想要理解透彻并不是那么简单的事情,但是,好在其中有一些比较清晰的脉络可以帮助我们快速地熟悉这个系统,因此抓住这些脉络中的核心要点对于能否学好Android

《Android和PHP开发最佳实践 》一导读

前 言 2012年,移动互联网革命正在如火如荼地进行,一个充满机遇的巨大市场正在开启,无论是创业者还是从业者都需要做好准备.Android和PHP两种技术,作为目前移动领域和互联网领域中的热门技术,已经受到广大开发者们的关注. 本书是目前市面上唯一一本同时讲述Android客户端开发和PHP服务端开发两方面内容,并且把Android移动互联网应用开发的完整解决方案分析透彻的书籍.通过本书,您不仅可以学习到Android客户端开发技巧,而且可以掌握PHP服务端开发的精华,甚至还可以开拓软件架构的思

《Android和PHP开发最佳实践》一2.11 小结

2.11 小结 在本章中,首先我们学习了Android的系统框架和应用框架,然后熟悉了Android的四大核心要点和四大组件(活动Activity.服务Service.广播接收器Broadcast Receiver.内容提供者Content Provider),以及Android中一些常用的数据存储方式.随后,我们还学会了如何安装和配置Android的开发环境,并且动手开发了第一个Android应用Hello World项目,还学习了一些使用DDMS进行调试的方法. 最后,建议大家回顾一下本章的

《Android和PHP开发最佳实践》一1.1 移动互联网时代的来临

1.1 移动互联网时代的来临 2011年,Android操作系统就已经占领了全球智能手机市场份额的半壁江山,霸主的地位彰显无遗(如图1-1所示).在国内,随着各大手机厂商的更新换代,Android操作系统的占有率也在火速上升中:中国移动公司已经早早推出了自己基于Android的OMS系统和OPhone,甚至连各大互联网巨头也在纷纷推出自己基于Android的手机产品.据统计,2012年内全球智能手机市场增长率达到49%,中国移动互联网用户量已经突破4亿,手机用户量也已经超越了PC. 看到这里,相

《Android和PHP开发最佳实践》一第2章 Android开发准备

第2章 Android开发准备 在开始学习Android开发之前,让我们先来了解一个有趣的Android小知识:Android一词最早出现于法国作家利尔亚当在1886年发表的科幻小说<未来夏娃>中,书中将外表像人的机器起名为Android(不知道是不是和Angel同音的缘故),正因为如此,Android的商标也是一个绿色的小机器人.直至今日,大家都知道Android代表的是Google推出的开源智能移动终端操作系统. 本章将先对Android系统框架.Android应用框架以及Android应

《Android和PHP开发最佳实践》一第1章 学 前 必 读

第1章 学 前 必 读 在学习任何知识之前,做好准备工作是非常有必要的.在本章,我们先来了解一下目前正如火如荼的移动互联网时代的大背景,然后我们会讲清楚我们为何要学习Android和PHP这套组合方案,以及学习Android和PHP开发的大体思路和学习方法.相信大家读完本章以后,不仅会对Android和PHP这个强大的组合更感兴趣,而且之后的学习之路会更加顺畅.