02-android程序设计-体系费下载

上传人:xzh****18 文档编号:51583775 上传时间:2018-08-15 格式:PPT 页数:62 大小:1.84MB
返回 下载 相关 举报
02-android程序设计-体系费下载_第1页
第1页 / 共62页
02-android程序设计-体系费下载_第2页
第2页 / 共62页
02-android程序设计-体系费下载_第3页
第3页 / 共62页
02-android程序设计-体系费下载_第4页
第4页 / 共62页
02-android程序设计-体系费下载_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《02-android程序设计-体系费下载》由会员分享,可在线阅读,更多相关《02-android程序设计-体系费下载(62页珍藏版)》请在金锄头文库上搜索。

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

2、Android程序的类u简化Android组件的重用方式u通过该层的软件规范,可以进行功能的扩展u可以在规定的安全限制之下进行程序之间的共享6应用程序框架层(2)p核心的应用程序服务u活动管理器(Activity Manager)管理应用程序生命周期及 Activity栈u视图(Views)用来创建程序的用户界面,包括列表、网 格、文本框等u通知管理器(Notification Manager )用来在状态栏显示 应用程序给用户的通知u内容管理器(Content Providers)使得应用程序之间可以 进行数据共享u资源管理器(Resource Manager)提供对字符串和图像 等非代码资

3、源的访问7核心类库pAndroid包含了C/C+库u被Android系统中不同的组件所使用u通过应用程序框架为开发者提供服务8库(Libraries)p库(Libraries)p系统C库u继承自BSD的标准C系统函数库u为基于Linux的嵌入式系统进行了定制和优化9库(Libraries)(2)p媒体库u基于Packet Video OpenCore,第三方库u支持多种常用音视频编解码pMpeg4,H.264,MP3等u支持静态图像文件pJPG,PNG等pSurface Manageru管理显示子系统u为多个应用程序提供2D和3D图层无缝融合pLibWebCoreuWeb浏览器引擎u用来支持A

4、ndroid浏览器和可嵌入的Web视图10库(Libraries)(3)pSGLu2D图形引擎的核心库pSQLiteu轻量级关系数据库引擎u所有程序可用pFreeTypeu用来支持位图和矢量字体渲染pSSLu用来支持安全套接字层(SSL)加密协议的安全Internet通信p3D LibrariesuOpenGL的嵌入式版本OpenGL ESu可使用硬件3D加速或者软件3D加速11运行时(Run-time)pAndroid Run-Time包括两个部分u核心库uDalvik虚拟机p核心库u提供JAVA 编程语言核心库的大多数功能pDalvik虚拟机uGoogle为Android设计的Java虚拟

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

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

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

8、E 802.15.1标准)的无线传输技术pFlash存储驱动(Flash Memory Driver)u基于MTD的Flash驱动程序pBinder IPC驱动uAndroid的特殊驱动程序,具有单独的设备节点,提供进程间通信的功 能16Linux内核(3)pUSB驱动(USB Driver)u为移动智能终端的USB接口提供驱动p键盘驱动(KeyBoard Driver)u作为输入设备的键盘驱动pWiFi驱动u基于IEEE 802.11标准的驱动程序p音频驱动(Audio Driver)u基于ALSA(Advanced Linux Sound Architecture)的高级Linux声音 体

9、系驱动pPower Management(电源管理)u电池电量等17Android进程与线程进程和线程p进程u具有独立功能的程序在操作系统中的运行活动u资源分配和调度的独立单位p线程u进程中的独立实体uCPU进行调度的基本单位u不拥有系统资源,拥有运行使用资源p进程与线程的映射u一对一u一对多u多对多19Android进程pAndroid的基础操作系统u在Android的操作系统层是Linuxu使用Linux进程pAndroid进程u系统会为Andorid程序分配Linux用户IDu每个进程会有相应的权限,实现进程之间的安全p用户进程的创建u如应用程序组件是第一次启动且无其他组件运行,Andr

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

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

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

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

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

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

16、用 异步任务来完成p异步任务u允许以异步方式来操作用户界面u异步任务首先阻塞工作线程,然后在UI线程中进行结果的显示u不需要人工干预28Android SDKAndroid SDKpAndroid SDK提供开发Android应用程序所使用的开发组件uWindows/Linux/Mac平台上均有对应SDKu包含了Android平台上的工具集u以Java语言为基础pAndroid SDK提供的主要功能u访问摄像头和GPS等硬件u自带的Google地图和LBS服务u后台服务uSQLite数据库u数据共享和应用程序通信u图形支持u优化的内存和进程管理u30pAndroid SDK所支持的操作系统:uWindows XP (32-bit) or Vista (32- or 64-bit)uMac OS X 10.4.8 or later (x86 only)uLinux31Android SDK目录p在安装Android SDK的android-sdk-windows目录中32Android SDK目录(2)padd-onsu保存附加库u例如Google MapspDocsuAndroid

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号