收藏 分享(赏)

2023年Android程序设计体系(教学课件).ppt

上传人:g****t 文档编号:40355 上传时间:2023-01-07 格式:PPT 页数:62 大小:1.80MB
下载 相关 举报
2023年Android程序设计体系(教学课件).ppt_第1页
第1页 / 共62页
2023年Android程序设计体系(教学课件).ppt_第2页
第2页 / 共62页
2023年Android程序设计体系(教学课件).ppt_第3页
第3页 / 共62页
2023年Android程序设计体系(教学课件).ppt_第4页
第4页 / 共62页
2023年Android程序设计体系(教学课件).ppt_第5页
第5页 / 共62页
2023年Android程序设计体系(教学课件).ppt_第6页
第6页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、Android体系结构和根本组件体系结构和根本组件 嵌入式系统开发与设计嵌入式系统开发与设计 Android体系结构体系结构 Android系统架构 3 Android分层结构 Android系统使用了软件栈Software Stack来构建Android分层结构 从上到下依次为 应用程序层 应用程序框架层 核心类库 Linux内核 4 应用程序层 Android应用程序层集成了核心应用程序,包括 email客户端 SMS短消息程序 Google日历 Google地图 浏览器 联系人管理程序 上述程序在Android系统发布时作为核心程序打包发布 Android应用程序由Java语言编写 5

2、应用程序框架层 该层为开发者提供API框架 提供了用来创立Android程序的类 简化Android组件的重用方式 通过该层的软件标准,可以进行功能的扩展 可以在规定的平安限制之下进行程序之间的共享 6 应用程序框架层(2)核心的应用程序效劳 活动管理器Activity Manager管理应用程序生命周期及Activity栈 视图Views用来创立程序的用户界面,包括列表、网格、文本框等 通知管理器Notification Manager 用来在状态栏显示应用程序给用户的通知 内容管理器Content Providers使得应用程序之间可以进行数据共享 资源管理器Resource Manage

3、r提供对字符串和图像等非代码资源的访问 7 核心类库 Android包含了C/C+库 被Android系统中不同的组件所使用 通过应用程序框架为开发者提供效劳 8 库Libraries 库Libraries 系统C库 继承自BSD的标准C系统函数库 为基于Linux的嵌入式系统进行了定制和优化 9 库Libraries(2)媒体库 基于Packet Video OpenCore,第三方库 支持多种常用音视频编解码 Mpeg4,H.264,MP3等 支持静态图像文件 JPG,PNG等 Surface Manager 管理显示子系统 为多个应用程序提供2D和3D图层无缝融合 LibWebCore

4、Web浏览器引擎 用来支持Android浏览器和可嵌入的Web视图 10 库Libraries(3)SGL 2D图形引擎的核心库 SQLite 轻量级关系数据库引擎 所有程序可用 FreeType 用来支持位图和矢量字体渲染 SSL 用来支持平安套接字层SSL加密协议的平安Internet通信 3D Libraries OpenGL的嵌入式版本OpenGL ES 可使用硬件3D加速或者软件3D加速 11 运行时Run-time Android Run-Time包括两个局部 核心库 Dalvik虚拟机 核心库 提供JAVA 编程语言核心库的大多数功能 Dalvik虚拟机 Google为Andro

5、id设计的Java虚拟机 12 运行时Run-time(2)Dalvik虚拟机 Android程序运行于Dalvik虚拟机之上 设计与Java虚拟机不同 Dalvik虚拟机运行的是Dex专有文件格式,JVM运行Java字节码 Dalvik是基于存放器进行设计,JVM是基于栈 Android程序与虚拟机的关系 每个Android程序都有自己的进程,拥有一个独立的Dalvik虚拟机实例 Dalvik虚拟机被设计成为一个设备,可以高效的同时运行多个虚拟系统 Android程序通过编译后还需要通过dx工具转换为.dex文件 Dalvik虚拟机执行.dex文件 13 运行时Run-time(3)Dalv

6、ik虚拟机的特征 专有文件格式.dex 通过dex将应用中所定义的许多类生成的class文件整合到一个文件中,减少了冗余信息,文件大小和I/O操作数量,提高类的查找速度 增加对新操作码的支持 文件结构简洁,使用等长指令,执行效率高 扩大了只读结构大小,利于程序间数据共享 针对.dex的优化 针对小内存进行了优化 基于存放器 提高了代码执行效率,代价是在硬件和通用性上的降低 应用/进程/虚拟机的对应 实现进程之间的隔离,保护程序平安 Dalvik虚拟机依赖操作系统底层 线程调度和管理,内存分配和管理,互斥等 14 Linux内核 Android的操作系统核心 Android 4.0之前的Linu

7、x内核是基于Linux 2.6 Android 4.0、4.1和4.2是基于Linux 3.0 但不是完全的Linux,不包含全部的Linux 系统初始化和编程接口和标准的Linux 系统是有所不同的 Android的操作系统核心效劳 可以看做是硬件层和系统软件上层的抽象层 平安性,内存管理,进程管理,网络协议栈,电源管理和驱动 15 Linux内核(2)显示驱动Display Driver 基于Linux的帧缓冲Frame Buffer驱动 照相机驱动Camera Driver 基于Linux的Video for Linux驱动 蓝牙驱动Bluetooth Driver 基于蓝牙IEEE 8

8、02.15.1标准的无线传输技术 Flash存储驱动Flash Memory Driver 基于MTD的Flash驱动程序 Binder IPC驱动 Android的特殊驱动程序,具有单独的设备节点,提供进程间通信的功能 16 Linux内核(3)USB驱动USB Driver 为移动智能终端的USB接口提供驱动 键盘驱动KeyBoard Driver 作为输入设备的键盘驱动 WiFi驱动 基于IEEE 802.11标准的驱动程序 音频驱动Audio Driver 基于ALSAAdvanced Linux Sound Architecture的高级Linux声音体系驱动 Power Manag

9、ement电源管理 电池电量等 17 Android进程与线程进程与线程 进程和线程 进程 具有独立功能的程序在操作系统中的运行活动 资源分配和调度的独立单位 线程 进程中的独立实体 CPU进行调度的根本单位 不拥有系统资源,拥有运行使用资源 进程与线程的映射 一对一 一对多 多对多 19 Android进程 Android的根底操作系统 在Android的操作系统层是Linux 使用Linux进程 Android进程 系统会为Andorid程序分配Linux用户ID 每个进程会有相应的权限,实现进程之间的平安 用户进程的创立 如应用程序组件是第一次启动且无其他组件运行,Android系统为应

10、用程序创立单线程的Linux进程 默认同一应用程序的所有组件运行在同一个进程和线程里 称为main主线程 如进程已存在,那么组件运行在已有进程或线程中;或者创立额外的线程中;或者指定组件运行在其他进程中 20 Android进程(2)Android进程的控制 在manifest文件中来设置组件所在的进程 组件可以运行在自己所在程序的进程中或者与某些组件共享进程 进程的终止 当内存缺乏或活动进程需要内存时,Android系统会根据内存使用情况终止其他进程 被终止进程会在需要时重新启动 21 Android进程(3)Android进程的生命周期 Android系统尽可能维持进程在内存中的存在 移动

11、智能终端的内存受限,在必要时系统会终止旧进程来提供内存空间 根据进程的重要性来选择哪些进程会被先终止 重要性小的先被终止 Android进程的重要性等级划分 前台进程 可见进程 效劳进程 后台进程 空进程 22 Android进程(4)前台进程 正在执行的程序的进程,包括 进程的一个activity正在与用户交互 进程拥有一个绑定在正在与用户交互的activity上的service 进程拥有一个前台运行的Service 进程拥有一个正在执行生命周期中onCreate(),onStart()或onDestory()方法的Service 进程拥有一个正在执行onReceive()方法的Broadc

12、astReceiver 前台进程通常不多 当内存太小以至于不能容纳所有的可能前台进程时,一些前台进程就会被终止 23 Android进程(5)可见进程 不拥有运行于前台的组件,包括 拥有不在前台但可见的activity 前台activity启动对话框时 效劳进程 进程拥有绑定到可见activity的Service 进程运行了被startService()启动的Service 后台进程 进程拥有不可见的activity 空进程 进程,不拥有任何active的组件 24 Android进程(6)Android根据进程中当前active组件的重要性,来安排其进程级别 例如,如果一个进程拥有一个ser

13、vice和一个可见的activity,进程会被定为可见进程,而不是效劳进程。被其它进程所依赖的进程,其级别可能会被提高 拥有service的进程比拥有后台activity的进程级别高 当一个activity启动一个需长时间执行的操作时,启动Service比创立一个线程效率高 使用service能保证操作至少有“service进程的优先级 25 Android进程(7)进程间通讯 使用远程过程调用remote procedure call,RPC提供的进程间通信IPC机制 被activity或其他应用程序组件调用的方法将在其他进程中被远程执行,而所有的结果将被返回给调用者 要求把方法调用及其数据

14、分解到操作系统可以理解的程度,并将其从本地的进程和地址空间传输至远程的进程和地址空间,然后在远程进程中重新组装并执行这个调用。执行后的返回值将被反向传输回来 Android提供了执行IPC事务所需的全部代码 需要关注定义和实现RPC编程接口上即可 26 Android线程 Android UI线程 应用程序启动时,系统为之创立“main主线程,有时也称为UI线程 负责将事件分发给相应用户界面的widget 负责应用程序与Android UI组件包之间的交互 不是每个组件的实例都拥有单独的线程 UI线程中实例化同一个进程中的所有组件 UI线程分发对每个组件的系统调用 对系统回调进行响应的方法总是

15、运行在UI线程 Android UI线程的要点 不要让UI线程做每一件事情 UI线程的阻塞超过一定时间大约5s,会引起ANR“应用程序没有响应对话框 单线程模式下不要阻塞UI线程,也不要在UI线程之外访问UI组件包 27 Android线程(2)工作线程 为保证程序的响应能力,创立单独的线程来完成耗时的操作 注意:工作线程不能访问UI组件包 否那么可能导致不明确、不可预见的后果,并且难以跟踪 需确保工作线程完成工作,UI线程进行UI操作 通过使用不同的方法可以到达 代码复杂程度增加了 为确保代码不会变的特别复杂并且难以维护,对于复杂操作可以采用异步任务来完成 异步任务 允许以异步方式来操作用户

16、界面 异步任务首先阻塞工作线程,然后在UI线程中进行结果的显示 不需要人工干预 28 Android SDK Android SDK Android SDK提供开发Android应用程序所使用的开发组件 Windows/Linux/Mac平台上均有对应SDK 包含了Android平台上的工具集 以Java语言为根底 Android SDK提供的主要功能 访问摄像头和GPS等硬件 自带的Google地图和LBS效劳 后台效劳 SQLite数据库 数据共享和应用程序通信 图形支持 优化的内存和进程管理 30 Android SDK所支持的操作系统:Windows XP(32-bit)or Vista(32-or 64-bit)Mac OS X 10.4.8 or later(x86 only)Linux 31 Android SDK目录 在安装Android SDK的android-sdk-windows目录中 32 Android SDK目录(2)add-ons 保存附加库 例如Google Maps Docs Android SDK API参考文档 可以对API进行查阅 Extras

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用范文 > 工作计划

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2