开发者社区> 华章计算机> 正文

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

简介: 本节书摘来自华章出版社《Android和PHP开发最佳实践》一书中的第2章,第2.2节,作者 黄隽实,更多章节内容可以访问云栖社区“华章计算机”公众号查看
+关注继续查看

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)。

image

image

以上列出的模块都是我们在应用开发中经常用到的,大家可以先熟悉一下。其中最核心的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)系统,使应用程序可以访问日志消息,使开发人员获得更大的自由。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【云吞铺子】业务系统性能压测最佳实践(二)--业务压测注意事项
云吞铺子--双11最佳技术实践系列# 本期继续为大家带来阿里云在本次双11实战中沉淀的前沿经验和满满干货!由阿里云技术高手霄翎为您深度阐述云上业务压测全流程注意事项!大牛出品,必属精品!
9052 0
Android系统源代码下载
引用:http://www.cnblogs.com/mandroid/archive/2011/06/06/2073473.html 一、概述 众所周知,Android移动操作系统是Google花费了很大的财力、物力及人力的前提下,推广到世界各个角落,以开放源代码的方式(当然也不是完全开放所有),使其在世界范围内迅速漫延开来,到目前虽说只有三四年的时间 ,火热程度,也不用我细说了,看看业界新闻就明白了。
899 0
Android系统服务-WindowManager
引用:http://blog.sina.com.cn/s/blog_783153d1010163lv.html WindowManager是Android中一个重要的服务 (Service )。WindowManager Service 是全局的,是唯一的。
673 0
Android系统启动过程学习
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/53780960 使用 an...
807 0
开源调度框架Quartz最佳实践
开源调度框架Quartz最佳实践 Quartz是一个Java调度框架,当前的最新版本为2.2.1。 以Quartz 2.2.1版为例,Quartz最佳实践(用于生产系统)总结如下:1、跳过更新检查Quartz内置了一个“更新检查”特性,因此Quartz项目每次启动后都会检查官网,Quartz是否存在新版本。
926 0
MongoDB最佳实践畅谈-计费系统
MongoDB最佳实践畅谈-计费系统 MongoDB的最佳实践,在以下情况,你应该使用MongoDB。 1)高写负载的场景 MongoDB默认更适合高写入而不是事务安全。
1424 0
[Android]Android端ORM框架——RapidORM(v2.1)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM框架——RapidORM(v2.1) RapidORM:Android端轻量高性能的ORM框架 GitHub: https://github.com/wangjiegulu/RapidORM RapidORM v2.1 feature 在执行SQL和创建表时提升性能。
637 0
Android官方开发文档Training系列课程中文版:动画视图之转场框架介绍
原文地址:http://android.xsoftlab.net/training/transitions/index.html 引言 Activity所呈现的UI经常会由用户的输入或者其它事件而发生变化。
978 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载