本节书摘来异步社区《OpenGL ES 3.x游戏开发(上卷)》一书中的第1章,第1.5节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 Android应用程序运行的机制

前面介绍了如何搭建Android开发环境、如何开发Hello Android应用程序以及Android应用程序的调试,接下来在本节中将简要地介绍Android应用程序的运行机制。

1.5.1 应用程序的系统架构

Android平台由应用程序、应用程序框架、Android运行时、系统库以及底层Linux内核构成,详细结构如图1-68所示。

说明

应用程序层里面包含的就是需要读者去发挥创意开发的、各种各样丰富多彩的应用程序,这也是一般Android应用开发人员工作的层次。

1.5.2 应用程序框架

Android应用程序框架是开发Android应用的基础,开发者在开发时有大部分的时间用在调用这一层。Android应用程序框架包含活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、位置管理器、资源管理器以及通知管理器等,如图1-69所示。

应用程序框架层各部分的具体功能如下所列。

  • 活动管理器(Activity Manager):管理所有应用程序的生命周期并提供相应的应用程序导航返回栈。
  • 窗口管理器(Window Manager):管理所有的应用程序窗口。
  • 内容提供者(Content Providers):用来在应用程序之间互相读取或者分享数据。
  • 视图系统(View System):主要包含用来构建应用程序界面的基本控件,- 包含普通按钮、列表、文本框和单选按钮、复选框等。
  • 包管理器(Package Manager):用来进行Android系统内的程序管理。
  • 电话管理器(Telephony Manager):用来管理所有与移动电话相关的功能。
  • 位置管理器(Location Manager):提供位置服务。
  • 资源管理器(Resource Manager):为应用程序提供各种资源,如图片、布局文件以及本地化字符串等。
  • 通知管理器(Notification Manager):用于管理显示在状态栏的应用程序中的通知信息。状态栏通常在手机的顶部,如短信、语音邮件提示以及剩余电量等全部会在这里显示。

1.5.3 Android运行时

Android运行时包括核心库(Core Libraires)以及Dalvik虚拟机(Dalvik Virtual Machine)两部分,如图1-70所示。

  • 核心库(Core Libraires)主要包括两部分,一部分是来自于JavaSE中的核心Java部分,如集合框架、多线程等。另一部分由Android核心库,如an- droid.os以及android.media等组成。
  • Dalvik虚拟机(Dalvik Virtual Machine)是一种基于寄存器的Java虚拟机,主要依靠转换工具dx将Java字节码转换为dex格式(.dex)。基于寄存器的Java虚拟机的优点是所需资源相对较少,同时使用硬件实现虚拟机也会比较容易。

说明

与传统的JavaME不同的是,每个Android应用程序都有一个自己特有的进程,每个应用程序都是使用一个自己持有的Dalvik虚拟机来执行的,而不像在大部分JavaME实现中,多个JavaME应用程序共享一个Java虚拟机进程。

1.5.4 系统库

应用程序框架是最接近于应用程序的软件组件服务,而更底层则是Android的系统函数库(Libraries),这部分是应用程序框架的支撑,其基本架构如图1-71所示。

  • Surface Manager管理对显示子系统的访问,并且负责将不同应用程序2D及3D绘制的结果进行显示合成。
  • Media Framework(媒体函数库)是基于Packet Video公司的OpenCORE发展而成的,使用该函数库可以方便地播放以及录制多种常见格式的影音。这些格式主要包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等。
    SQLite是内嵌到Android系统中的一套轻量级的关系数据库引擎,支持关系数据库的各项功能。

OpenGL ES:Android是根据OpenGL ES1.0、1.1、2.0、3.0或3.1的 API标准来实现其3D绘图函数库的,该函数库可以以硬件加速方式执行,也可以用软件模拟方式执行(仅限OpenGL ES 1.0与1.1),不过在没有硬件加速的情况下性能会有明显差距。

  • FreeType负责点阵字体以及向量字体的绘图显示。
  • WebKit本身是一个开源项目,许多浏览器也都是用WebKit引擎所开发的,Android下原生自带的浏览器就是基于其实现的。Android将其引入到系统库,大大方便了开发人员HTTP相关功能的开发。
  • SGL库为Android在2D绘图方面提供绘图引擎。
  • SSL位于TCP/IP与各种应用层协议之间,为数据通信提供支持。
  • Libc提供了一套针对于移动设备优化后的C标准库。

1.5.5 底层Linux内核

Android平台开放性的基础是因为其采用了Linux内核,如图1-72所示。Android平台中的操作系统采用了Linux 2.6版的内核,其包括显示驱动、摄像头驱动、Flash内存驱动、Binder(IPC)驱动、键盘驱动、WIFI驱动、视频驱动及电源驱动等。

-Linux内核层是软件层与硬件层之间的桥梁,软件开发人员不必关心底层Linux内核的实现细节,只需将全部精力投入到上层的软件开发中。而实现底层Linux内核的工作是由Google和手机厂商来完成,如驱动的更新或者新驱动的编写等。

《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制相关推荐

  1. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.6 本章小结

    本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.6节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...

  2. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.5节光照的每顶点计算与每片元计算...

    本节书摘来自异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.5节光照的每顶点计算与每片元计算,作者 吴亚峰,更多章节内容可以访问云栖社区&q ...

  3. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...

    本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.1节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...

  4. 《OpenGL ES 3.x游戏开发(上卷)》一2.4 文件I/O

    本节书摘来异步社区<OpenGL ES 3.x游戏开发(上卷)>一书中的第2章,第2.4节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  5. 《OpenGL ES 3.x游戏开发(下卷)》一1.2 顶点数组对象

    本节书摘来异步社区<OpenGL ES 3.x游戏开发(下卷)>一书中的第1章,第1.2节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  6. 《OpenGL ES 3.x游戏开发(下卷)》一2.4 展翅飞翔的雄鹰

    本节书摘来异步社区<OpenGL ES 3.x游戏开发(下卷)>一书中的第2章,第2.4节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  7. Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题

    转载:http://blog.csdn.net/iamlazybone/article/details/17191539 懒骨头(http://blog.csdn.net/iamlazybone  Q ...

  8. Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应...

    2019独角兽企业重金招聘Python工程师标准>>> 上节说到cygwin下成功编译出so文件,下面我们要把游戏运行在android上. 开始干活! 其实步骤可以参考 Cocos2 ...

  9. Android OpenGL ES 学习(六) – 使用 VBO、VAO 和 EBO/IBO 优化程序

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

最新文章

  1. Xtrabackup bug记录
  2. [Python Study Notes] Python的安装
  3. 基于SP4062电路IO接口八通道保护板
  4. C++ 后台程序实时性能监控
  5. Collections工具类 java
  6. IE下table的innerHTML无效的处理方法
  7. 用户态处理arp、ndisc neighbour solication 报文
  8. ArrayList的retainAll()方法使用
  9. 秒杀系统企业级实战应用之真实工业界案例视频
  10. 激光雷达类型分类,知名激光雷达公司介绍,三角测距激光雷达与TOF激光雷达原理
  11. 安卓苹果下载地址合并 苹果安卓专用二维码是如何生成的
  12. 计算机u盘驱动坏了如何的修复,u盘损坏怎么修复 u盘损坏再次使用
  13. word2CHM,做软件产品必备的说明书工具
  14. 如何将微信服务号改成订阅号?
  15. 计算机二级 公共基础知识
  16. Oracle Demo库默认用户/密码为什么叫Scott/Tigger
  17. Android简单集成友盟统计
  18. GPS从入门到放弃(一)、GPS 定位原理
  19. ubuntu火狐浏览器安装flash_player插件
  20. 轨道不平顺-振动响应-信号分析方法(持续整理中...)

热门文章

  1. 出席国际海水稻论坛-林裕豪:从玉农业谋定陆丰稻作改良
  2. django 单元测试小结
  3. centos上安装supervisor来管理dotnetcore等应用程序
  4. Jenkins 笔记
  5. ubuntu各版本代号(更新至15.04)及各版本下载地址等
  6. Unreal Engine4 蓝图入门
  7. Eclipse中启动tomcat报错:A child container failed during start
  8. Unity BZip2压缩和解压,基于C#
  9. 互联网医疗上市“大逃杀”
  10. 复盘-电商产品「分类」功能迭代