02-武汉科技大学Android程序设计-体系解析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Android体系结构和基本组件武汉科技大学计算机学院2020年1月嵌入式系统开发与设计Android体系结构Android系统架构3Android分层结构Android系统使用了软件栈(SoftwareStack)来构建Android分层结构从上到下依次为应用程序层应用程序框架层核心类库Linux内核4应用程序层Android应用程序层集成了核心应用程序,包括email客户端SMS短消息程序Google日历Google地图浏览器联系人管理程序上述程序在Android系统发布时作为核心程序打包发布Android应用程序由Java语言编写5应用程序框架层该层为开发者提供API框架提供了用来创建Android程序的类简化Android组件的重用方式通过该层的软件规范,可以进行功能的扩展可以在规定的安全限制之下进行程序之间的共享6应用程序框架层(2)核心的应用程序服务活动管理器(ActivityManager)管理应用程序生命周期及Activity栈视图(Views)用来创建程序的用户界面,包括列表、网格、文本框等通知管理器(NotificationManager)用来在状态栏显示应用程序给用户的通知内容管理器(ContentProviders)使得应用程序之间可以进行数据共享资源管理器(ResourceManager)提供对字符串和图像等非代码资源的访问7核心类库Android包含了C/C++库被Android系统中不同的组件所使用通过应用程序框架为开发者提供服务8库(Libraries)库(Libraries)系统C库继承自BSD的标准C系统函数库为基于Linux的嵌入式系统进行了定制和优化9库(Libraries)(2)媒体库基于PacketVideoOpenCore,第三方库支持多种常用音视频编解码Mpeg4,H.264,MP3等支持静态图像文件JPG,PNG等SurfaceManager管理显示子系统为多个应用程序提供2D和3D图层无缝融合LibWebCoreWeb浏览器引擎用来支持Android浏览器和可嵌入的Web视图10库(Libraries)(3)SGL2D图形引擎的核心库SQLite轻量级关系数据库引擎所有程序可用FreeType用来支持位图和矢量字体渲染SSL用来支持安全套接字层(SSL)加密协议的安全Internet通信3DLibrariesOpenGL的嵌入式版本OpenGLES可使用硬件3D加速或者软件3D加速11运行时(Run-time)AndroidRun-Time包括两个部分核心库Dalvik虚拟机核心库提供JAVA编程语言核心库的大多数功能Dalvik虚拟机Google为Android设计的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)Dalvik虚拟机的特征专有文件格式.dex通过dex将应用中所定义的许多类生成的class文件整合到一个文件中,减少了冗余信息,文件大小和I/O操作数量,提高类的查找速度增加对新操作码的支持文件结构简洁,使用等长指令,执行效率高扩大了只读结构大小,利于程序间数据共享针对.dex的优化针对小内存进行了优化基于寄存器提高了代码执行效率,代价是在硬件和通用性上的降低应用/进程/虚拟机的对应实现进程之间的隔离,保护程序安全Dalvik虚拟机依赖操作系统底层线程调度和管理,内存分配和管理,互斥等14Linux内核Android的操作系统核心Android4.0之前的Linux内核是基于Linux2.6Android4.0、4.1和4.2是基于Linux3.0但不是完全的Linux,不包含全部的Linux系统初始化和编程接口和标准的Linux系统是有所不同的Android的操作系统核心服务可以看做是硬件层和系统(软件)上层的抽象层安全性,内存管理,进程管理,网络协议栈,电源管理和驱动15Linux内核(2)显示驱动(DisplayDriver)基于Linux的帧缓冲(FrameBuffer)驱动照相机驱动(CameraDriver)基于Linux的VideoforLinux驱动蓝牙驱动(BluetoothDriver)基于蓝牙(IEEE802.15.1标准)的无线传输技术Flash存储驱动(FlashMemoryDriver)基于MTD的Flash驱动程序BinderIPC驱动Android的特殊驱动程序,具有单独的设备节点,提供进程间通信的功能16Linux内核(3)USB驱动(USBDriver)为移动智能终端的USB接口提供驱动键盘驱动(KeyBoardDriver)作为输入设备的键盘驱动WiFi驱动基于IEEE802.11标准的驱动程序音频驱动(AudioDriver)基于ALSA(AdvancedLinuxSoundArchitecture)的高级Linux声音体系驱动PowerManagement(电源管理)电池电量等17Android进程与线程进程和线程进程具有独立功能的程序在操作系统中的运行活动资源分配和调度的独立单位线程进程中的独立实体CPU进行调度的基本单位不拥有系统资源,拥有运行使用资源进程与线程的映射一对一一对多多对多19Android进程Android的基础操作系统在Android的操作系统层是Linux使用Linux进程Android进程系统会为Andorid程序分配Linux用户ID每个进程会有相应的权限,实现进程之间的安全用户进程的创建如应用程序组件是第一次启动且无其他组件运行,Android系统为应用程序创建单线程的Linux进程默认同一应用程序的所有组件运行在同一个进程和线程里称为main主线程如进程已存在,则组件运行在已有进程或线程中;或者创建额外的线程中;或者指定组件运行在其他进程中20Android进程(2)Android进程的控制在manifest文件中来设置组件所在的进程组件可以运行在自己所在程序的进程中或者与某些组件共享进程进程的终止当内存不足或活动进程需要内存时,Android系统会根据内存使用情况终止其他进程被终止进程会在需要时重新启动21Android进程(3)Android进程的生命周期Android系统尽可能维持进程在内存中的存在移动智能终端的内存受限,在必要时系统会终止旧进程来提供内存空间根据进程的重要性来选择哪些进程会被先终止重要性小的先被终止Android进程的重要性等级划分前台进程可见进程服务进程后台进程空进程22Android进程(4)前台进程正在执行的程序的进程,包括进程的一个activity正在与用户交互进程拥有一个绑定在正在与用户交互的activity上的service进程拥有一个前台运行的Service进程拥有一个正在执行生命周期中onCreate(),onStart()或onDestory()方法的Service进程拥有一个正在执行onReceive()方法的BroadcastReceiver前台进程通常不多当内存太小以至于不能容纳所有的可能前台进程时,一些前台进程就会被终止23Android进程(5)可见进程不拥有运行于前台的组件,包括拥有不在前台但可见的activity前台activity启动对话框时服务进程进程拥有绑定到可见activity的Service进程运行了被startService()启动的Service后台进程进程拥有不可见的activity空进程进程,不拥有任何active的组件24Android进程(6)Android根据进程中当前active组件的重要性,来安排其进程级别例如,如果一个进程拥有一个service和一个可见的activity,进程会被定为可见进程,而不是服务进程。被其它进程所依赖的进程,其级别可能会被提高拥有service的进程比拥有后台activity的进程级别高当一个activity启动一个需长时间执行的操作时,启动Service比创建一个线程效率高使用service能保证操作至少有“service进程”的优先级25Android进程(7)进程间通讯使用远程过程调用(remoteprocedurecall,RPC)提供的进程间通信(IPC)机制被activity或其他应用程序组件调用的方法将(在其他进程中)被远程执行,而所有的结果将被返回给调用者要求把方法调用及其数据分解到操作系统可以理解的程度,并将其从本地的进程和地址空间传输至远程的进程和地址空间,然后在远程进程中重新组装并执行这个调用。执行后的返回值将被反向传输回来Android提供了执行IPC事务所需的全部代码需要关注定义和实现RPC编程接口上即可26Android线程AndroidUI线程应用程序启动时,系统为之创建“main”主线程,有时也称为UI线程负责将事件分发给相应用户界面的widget负责应用程序与AndroidUI组件包之间的交互不是每个组件的实例都拥有单独的线程UI线程中实例化同一个进程中的所有组件UI线程分发对每个组件的系统调用对系统回调进行响应的方法总是运行在UI线程AndroidUI线程的要点不要让UI线程做每一件事情UI线程的阻塞超过一定时间(大约5s),会引起ANR“应用程序没有响应”对话框单线程模式下不要阻塞UI线程,也不要在UI线程之外访问UI组件包27Android线程(2)工作线程为保证程序的响应能力,创建单独的线程来完成耗时的操作注意:工作线程不能访问UI组件包否则可能导致不明确、不可预见的后果,并且难以跟踪需确保工作线程完成工作,UI线程进行UI操作通过使用不同的方法可以达到代码复杂程度增加了为确保代码不会变的特别复杂并且难以维护,对于复杂操作可以采用异步任务来完成异步任务允许以异步方式来操作用户界面异步任务首先阻塞工作线程,然后在UI线程中进行结果的显示不需要人工干预28AndroidSDKAndroidSDKAndroidSDK提供开发Android应用程序所使用的开发组件Windows/Linux/Mac平台上均有对应SDK包含了Android平台上的工具集以Java语言为基础AndroidSDK提供的主要功能访问摄像头和GPS等硬件自带的Google地图和LBS服务后台服务SQLite数据库数据共享和应用程序通信图形支持优化的内存和进程管理…30AndroidSDK(2)AndroidSDK所支持的操作系统:WindowsXP(32-bit)orVista(32-or64-bit)orWin7MacOSX10.4.8orlater(x86only)Linux31AndroidSDK目录在安装AndroidSDK的android-sdk-windows目录中32AndroidSDK目录(2)add-ons保存附加库例如GoogleMapsDocsAndroidSDKAPI参考文档可以对API进行查阅Extras扩展插件提供向下兼容的功能33AndroidSDK目录(

1 / 62
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功