1、基于Android平台的电子相册设计与实现格式修改后39资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。本科毕业论文题目: 基于Android平台的电子相册的设计与实现姓名: 班级: 学号: 日期致谢本论文的工作是在我的导师*的悉心指导下完成的, *严谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢二年来*对我的关心和指导。*悉心指导我们完成了论文项目相关的科研工作, 在学习上和生活上都给予了我很大的关心和帮助, 在此向*表示衷心的谢意。*对于我的科研工作和论文都提出了许多的宝贵意见, 在此表示衷心的感谢。在工作及撰写论文期间, 周飞宇同学对我论文在写作规范和格式方
2、面的存在的问题提出了很多宝贵的意见, 在此向她表示我的感激之情。中文摘要随着智能手机走进普通人的生活,它将成为人们获取信息的主要设备。因此,手机的应用服务将会有很大的发展空间, 手机电子相册服务就是其中的一项。Android平台支持各种应用的开发, 它是当前最流行的开源智能手机操作系统,最新的版本是android3.0, 提供了便捷灵活的开发接口。本课题在Android SDK2.2平台下, 设计了一个手机电子相册。采用了Android平台的Framework层提供的接口, 实现了图片预览、 图片动态切换、 停止播放等功能, 支持jpg, bmp, png和gif图片格式, 该程序是独立的ap
3、k文件, 能够安装在android2.2以上的系统内。它能够让手机成为一个电子相册, 用户能够将其放在心仪的地方, 来展示美好的图片, 而不必再去购买别的设备就能拥有精美的电子相册了。 本程序具有很好的可移植性和可继承性, 开发者能够在其基础之上, 建立更多的功能, 来设计更加专业级的电子相册。关键词: Android, framework, 电子相册, 预览AbstractSmart cell phone has flooded our life, and it will become main equipment for acquiring information. And cell ph
4、ones E-album service will have a great future, as one of application service of cell phone. Android platform supports all application research. It is the most popular open-source smart cell phone operating system. The newest version is Android 3.0, and it offers convenient and fast connector. On And
5、roid SDK 2.2 platform, this subject designs a cell phone E-album. Framework realizes picture preview, picture exchange, stop functions and so on, and supports jpg, bmp, png and gif. This project is a saperate apk file, and may set up in system above Android 2.2. It will make cell phone as E-album, g
6、uests may put it at any places he or she likes to show wonderful pictures, no need to purchase other equipment.This process has great portable and inheritable, researcher may build more functions based on it to design more professional E-album.Key words: Android, Framework, E-album, preview目录中文摘要IAb
7、stractII目录III第一章 绪论11.1 当前现状11.2 本设计的背景和研究意义31.3 本设计的目标31.4 论文结构3第二章电子相册研究42.1 电子相册简介42.2 电子相册的结构42.3 电子相册的性能42.4 电子相册的特点5第三章 Andriod平台介绍63.1 Android系统介绍63.2 Windows里的Android开发环境搭建15第四章 Android平台的电子相册的设计与实现174.1 Fade In/Fade Out特效与运行线程174.2 主要功能模块的设计与开发174.3 用手指移动相册里的照片184.4 主界面的图片切换204.5 本章总结22第五章
8、总结与展望235.1 总结235.2 展望23参考文献23第一章 绪论Android平台对我们来说已经不陌生了, 从 Google推出Android系统, 已经经历了2年多的发展, 当前最新的版本是Android3.0。作为全球最大的搜索引擎提供者, Google提供的服务实际上远不止搜索, 还包括Gmail、 Google Map、 Google Earth、 Google Talk、 YouTube、 iGoogle、 Google Docs、 Picasa、 Google Web API、 Blogger、 Google Notebook、 桌面搜索、 Google Answers、 G
9、oogle音乐搜索、 Google Street View等数量众多的服务。基于免费、 开放的互联网精神, 这些服务本身是不收费的。可是, 经过这些有创意的服务, Google吸引了大量互联网用户, 并成功地藉由广告服务, 获取了巨额利润。 Google主持开发Android平台, 其目的是推动全世界30亿手机用户, 更方便、 成本更低地访问互联网。Google公司宣称的目标是”组织世界上所有信息, 让所有人方便地访问”。Google认为, 手机价格越来越低, 而其中手机平台的价格变化不大, 在手机成本中所占比例越来越大。基于此, Google希望提供一个免费、 开放、 功能强大的手机操作系统
10、, 使用户承担的手机价格更低, 同时更方便、 更频繁地访问互联网。当然, Google本身也将因此而受益。 电子相册是指能够在电脑上或者是在移动终端上观赏的区别于CDVCD的静止图片的特殊文档, 其内容不局限于摄影照片, 也能够包括各种艺术创作图片。电子相册具有传统相册无法比拟的优越性: 图、 文、 声、 像并茂的表现手法, 随意修改编辑的功能, 快速的检索方式, 永不褪色的恒久保存特性, 以及廉价复制分发的优越手段。 本文就是在Android平台上, 基于SDK2.2开发的一款电子相册软件, 包括图片预览、 图片播放、 动态切换、 停止播放等功能。当然, 由于时间的关系, 本文仅实现了电子相
11、册的基础功能, 后续还有很多工作能够完善和深入。1.1 当前现状国内外百花齐放电子相册制作软件顾名思义, 则是用户制作电子相册的软件。当前国内外 电子相册繁多, 如图1.1所示, 图1.1电子相册封面不同的软件, 制作出的电子相册都会有不同。随着数码相机在家庭中越来越普及, 人们在能够更方便的拍摄照片却又不需要把拍摄的照片都冲印的时候, 更多就选择了打包保存在电脑或光盘中, 电子相册制作软件就在这一过程中充当了非常重要的作用。经过电子相册制作软件, 我们的照片能够更加动态、 更加多姿多彩的展现, 经过电子相册制作软件的打包, 相片能够更方便的以一个整体分发给亲朋好友, 刻录在光盘上保存, 或在
12、影碟机上播放。 COOZINE (XBOOKSKY)COOZINE 基于 Flash 技术, 是实现在线和离线电子相册、 电子图书的核心, 它应用在需要从 PDF 文件或 JPEG 文件源制作的电子杂志的情况, 它同时提供一些协助处理工具软件, 方便批量的处理, 而且帮助文档较详细, 还提供了演示下载包, 能够稍作修改即可。COOZINE 与当前的几类电子杂志软件不同, 它把阅读以及低成本批量制作作为首要追求目标。 每一本 COOZINE 电子杂志(电子图书)由 COOZINE、 JPEG 图片和 XML 文件 3 部分组成。 Portable Scribus 1.3.5.0Portable
13、Scribus是一款类似Adobe Pagemaker的开源电子相册制作软件, 能够用来制作个人文件、 邮件列表、 电子杂志类型的电子文档。它体积很小, 能够放在U盘里, 只需插入相应的电脑就能够使用。 Windows Movie MakerWindows Movie Maker是普通电脑最常见的可制作电子相册的软件 软件介绍: 是Windows系统会自带的视频制作软件, 在软件中添加图片后, 将图片拖拉到时间线上, 即可将添加的图片生成wmv视频。由于作为Windows系统自带软件, 这款软件具有广泛的传播性, 只需将相片简单制作为视频能够直接使用它。但由于软件功能繁多, 在制作电子相册上效
14、果单一, 没有转场特效, 也没有其它注释功能, 适用于对相册效果没有太多要求的制作者选择。 Premiere软件特点: premiere是一款专业级具有高级的编辑功能的电子相册制作软件, 对于专业用户, 它能够经过不断增加插件, 和用户的专业水平进行复杂的编辑, 制作出专业的绚丽相册, 但由于面向专业用户, 软件的操作十分复杂, 上手时间很长, 非专业用户使用有非常大的难度。1.2 本设计的背景和研究意义制作电子相册首先要获得数字化的图片, 即图片文件。用数字相机拍摄, 能够直接得到电子图片文件。也能够使用普通相机拍摄, 经过扫描仪得到图片文件。如果是游戏画面或VCDDVD画面, 可采用屏幕拷
15、贝或功能更强的截屏软件获得图片。 其次要对图片进行加工处理, 专业人士能够使用专业级的软件Photoshop, 想要操作简单快速, 高画质也能够使用国内图像处理软件, 实现更加精美的相册制作。 最后使用电子相册制作软件将处理后的图片制作成电子相册, 就能够进行观看了。1.3 本设计的目标本文的目标是在Android SDK2.2平台下, 设计了一个手机电子相册。采用了Android平台的Framework层提供的接口, 实现了图片预览、 图片动态切换、 停止播放等功能, 支持jpg, bmp, png和gif图片格式。能够让手机成为一个电子相册, 让用户不必再去购买别的设备就能拥有心仪的电子相
16、册了。1.4 论文结构第一章主要介绍课题的背景和现状第二章介绍手机电子相册服务的设计实现原理第三章详细介绍了基于Android平台的手机电子相册软件的设计与开发第四章对整个论文进行了总结, 并进行了展望, 对软件的不足进行了分析, 并说明了改进意见。第二章 电子相册研究2.1 电子相册简介电子相册分为两种, 一种是软件类型的电子相册, 一种是硬件类型的电子相册, 上文所讲的windows media player等制作的电子相册, 都属于软件类型, 除此之外, 还有一种电子相册为硬件类型, 指能够不借助电脑能够在LCD面板上显示数码照片的电子产品的展示效果, 还能够将照片显示到电视机上。还可接
17、U盘、 SD卡、 MMC卡, 除播放图片外, 还可播放MP3、 内置左右双喇叭、 边播放图片边听MP3、 看手机AVI格式电影、 DAT格式或MPEG格式或MPG格式电影( VCD文件) 、 VOB格式电影( DVD文件) ( 其它不支持的格式能够软件转换) 、 输出音频视频到电视机或音响, 制作这种电子相册的产品称为电子相框, 电子工程杂志将电子相框分为3类, 简易电子相框、 ”多媒体”电子相框高级、 ”多媒体”电子相框。 简易数码相框只能显示JPEG格式的图片, 而多媒体数码相框则能够播放音乐和视频。 某些高级”多媒体”数码相框能够经过因特网从RSS、 照片共享网站甚至电子邮件下载图片。这
18、些型号一般也支持无线传输( IEEE802.11) 。大部分数码相框能够像幻灯一样按可调整的时间间隔显示图片。一些相框还能够播放MP3音乐或者用相机拍摄的视频片断, 比如MPEG文件。 2.2 电子相册的结构一个电子相册往往由三部分组成: LCD液晶面板, PCB, 外部相框按钮等构件 LCD面板有一个模拟或者是数字的接口, 当然其面板尺寸大小可能不同。 其中PCB因为容纳了设备驱动和运行固件, 因而能够称得上是电子相框的核心了。 2.3 电子相册的性能一些数码相框只能够显示JPEG这种通用格式的图片, 也就是说有些高端产品也是能够显示比如png这类型的图片格式的。 大多数数码相框是以幻灯片的
19、形式显示照片的, 一般你能够经过调节切换时间间隔来达到满意的效果。当然有些还能够发送照片到打印机, 甚至支持其它多媒体内容, 比如记录在数码相机的电影录像模式的电影剪辑, MPEG视频文件还有MP3音频。 某些相框还也能够经过互联网上的RSS, 图片共享网站如Flickr, Picasa还有电子邮件这些媒介来加载图片。而具备这种网络功能的相框一般是支持无线( 802.11 ) 连接的。还有些其它的滇西电子相框能够显示txt文件的。 数码相框显示的图片文件一般是从相机存储卡读取的, 尽管某些相框还提供内部存储。某些框架电子相框具备使用USB接口从电脑直接传输文件到电子相框的功能。然而, 由于价格
20、过高, 一般很少有数码相框内置有记忆体的。其中一些人还包括一个或者是可充电电池的。 大多数7英寸( 十七点五厘米) 相框显示图像时候由于将图片进行了拉伸实现宽高比16:9的显示 , 因而存在非常明显的失真。因此, 一般为了达到良好的显示效果图片文件最好也选择合适的尺寸。 2.4 电子相册的特点硬件类型的电子相册相比于软件类型的电子相册, 具有实时性, 软件类型的电子相册一经软件生成, 则不需要再次生成, 可直接打开和传播, 而硬件类型的电子相册则实时生成, 由于专为电子相册展示而制作, 硬件类型的电子相册具有更大分辨率, 无需再连接电脑即可显示, 更可连接到电视机等硬件上播放。硬件类型的电子相
21、册的劣势在于, 不能将电子相册生成, 经过U盘等介质存储共享, 在传播上具有一定的局限性, 也不能生成用于刻录的视频形式。第三章 Andriod平台介绍3.1 Android系统介绍3.1.1 Android平台总体架构下图显示的是Android操作系统的主要组件。每一部分将会在下面具体描述。图3.1 Android系统架构图应用程序(Applications)Android会同一系列核心应用程序包一起发布, 该应用程序包包括email客户端, SMS短消息程序, 日历, 地图, 浏览器, 联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。应用程序框架开发人员也能够完全访问核心应用程
22、序所使用的API框架。该应用程序的架构设计简化了组件的重用; 任何一个应用程序都能够发布它的功能块,而且任何其它的应用程序都能够使用其所发布的功能块( 不过要遵循框架的安全性限制) 。同样, 该应用程序重用机制也使用户能够方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括; 丰富而又可扩展的视图( Views) , 能够用来构建应用程序, 它包括列表( lists) , 网格( grids) , 文本框( text boxes) , 按钮( buttons) , 甚至可嵌入的web浏览器。 内容提供器( Content Providers) 使得应用程序能够访问另一个应用
23、程序的数据( 如联系人数据库) , 或者共享它们自己的数据 资源管理器( Resource Manager) 提供 非代码资源的访问, 如本地字符串, 图形, 和布局文件( layout files) 。 通知管理器 ( Notification Manager) 使得应用程序能够在状态栏中显示自定义的提示信息。 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常见的导航回退功能。 窗口管理器(Window Manager) 用于管理窗口的生命周期及窗口布局。程序包管理器(Package Manager) 用于管理所有在Android上安装的程序包。电话管理(T
24、elephony Manager) 用于管理使用者拨打和接听电话的相关功能。程序库Android 包含一些C/C+库, 这些库能被Android系统中不同的组件使用。它们经过 Android 应用程序框架为开发者提供服务。以下是一些核心库: 系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc) , 它是专门为基于 embedded linux 的设备定制的。 该库遵循BSD协议, 继承了GNU/Linux里glibc的大部分接口, 但不完全兼容, 比glibc更小, 运行更快。媒体库 - 基于 PacketVideo OpenCORE; 该库支持多种常见的音频、 视频格
25、式回放和录制, 同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。 Surface Manager - 对显示子系统的管理, 而且为多个应用程序提供了2D和3D图层的无缝融合。 LibWebCore - 一个最新的web浏览器引擎, 支持Android浏览器和一个可嵌入的web视图。 SGL - 底层的2D图形引擎, 这是应用程序使用最多的渲染方式。3D libraries - 基于OpenGL ES 1.0 APIs实现; 该库能够使用硬件 3D加速( 如果可用) 或者使用高度优化的3D软加速。 FreeType -位图( bit
26、map) 和矢量( vector) 字体显示。 SQLite - 一个对于所有应用程序可用, 功能强劲的轻型关系型数据库引擎。 Audio Flinger 管理声音的输出设备(喇叭, 有线耳机, 蓝牙耳机等), 能够混合多路音频流的输出。Surface Flinger 管理图形、 图像的显示, 能够把来自不同应用的多个2D/3D图形组合, 叠加; 使用双缓冲机制。Android 运行库 Android 包括了一个核心库, 该核心库提供了JAVA编程语言核心库的大多数功能。包括数据结构、 工具、 文件访问、 网络访问、 图形处理等。 每一个Android应用程序都在它自己的进程中运行, 都拥有一
27、个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备能够同时高效地运行多个虚拟系统。 Dalvik虚拟机执行( .dex) 的Dalvik可执行文件, 该格式文件针对小内存使用做了 优化。同时虚拟机是基于寄存器的, 所有的类都经由JAVA编译器编译, 然后经过SDK中 的 dx 工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于Linux内核的一些功能, 比如线程机制和底层内存管理机制。Linux 内核 Android 的核心系统服务依赖于 Linux 2.6 内核, 如安全性, 内存管理, 进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象
28、层。3.1.2 Android应用程序的构成Android平台的应用程序主要是由以下四个组件构成的: 1活动 Activity2.意图 Intent 3.服务 Service4.内容提供器 Content Provider需要注意的是, 并不是每个Android应用程序都必须构建这4个组件, 有些可能由这4个组件的组合而成。一旦你确定了你的应用程序中需要的组件, 那么你就应该在AndroidManifest.xml中列出她们。这是一个XML配置文件, 它用于定义应用程序中需要的组件、 组件的功能及必要条件等。四种组件说明如下: 活动ActivityActivity是Android构造块中最基本
29、的一种, 在应用中, 一个Activity一般就是一个单独的屏幕。每一个Activity都被实现为一个独立的类, 而且继承于Activity这个基类。这个Activity类将会显示由几个Views控件组成的用户接口, 并对事件做出响应。大部份的应用都会包含多个的屏幕。例如, 一个短消息应用程序将会有一个屏幕用于显示联系人列表, 第二个屏幕用于写短消息, 同时还会有用于浏览旧短消息及进行系统设置的屏幕。每一个这样的屏幕, 就是一个Activity。从一个屏幕导航到另一个屏幕是很简单的。在一些应用中, 一个屏幕甚至会返回值给前一个屏幕。当一个新的屏幕打开后, 前一个屏幕将会暂停, 并保存在历史堆栈
30、中。用户能够返回到历史堆栈中的前一个屏幕。当屏幕不再使用时, 还能够从历史堆栈中删除。默认情况下, Android将会保留从主屏幕到每一个应用的运行屏幕。意图IntentAndroid使用了Intent这个特殊类, 实现在屏幕与屏幕之间移动。 Intent类用于描述一个应用将会做什么事。在Intent的描述结构中, 有两个最重要的部分: 动作和动作对应的数据。典型的动作类型有: MAIN( activity的门户) 、 VIEW、 PICK、 EDIT等。而动作对应的数据则以URI的形式进行表示。例如: 要查看一个人的联系方式, 需要创立一个动作类型为VIEW的intent, 以及一个表示这个
31、人的URI。与之有关系的一个类叫IntentFilter。相对于intent是一个有效的做某事的请求, 一个intent filter则用于描述一个activity( 或者Intent Receiver) 能够操作哪些intent。一个activity如果要显示一个人的联系方式时, 需要声明一个IntentFilter, 这个 IntentFilter要知道怎么去处理VIEW动作和表示一个人的URI。IntentFilter需要在AndroidManifest.xml中定义。经过解析各种Intent, 从一个屏幕导航到另一个屏幕是很简单的。当向前导航时, activity将会调用 startA
32、ctivity(Intent myIntent)方法。然后, 系统会在所有安装的应用程序中定义的IntentFilter中查找, 找到最匹配myIntent的Intent对应的 activity。新的activity接收到myIntent的通知后, 开始运行。当startActivity方法被调用将触发解析myIntent 的动作, 这个机制提供了两个关键好处: A、 Activities能够重复利用从其它组件中以Intent的形式产生的一个请求; B、 Activities能够在任何时候被一个具有相同IntentFilter的新的Activity取代。服务Service一个服务是具有一段较长
33、生命周期且没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中, 应该会有多个活动, 让使用者能够选择歌曲并播放歌曲。 然而, 音乐重放这个功能并没有对应的活动, 因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中, 媒体播放器这个活动会使用Context.startService() 来启动一个服务, 从而能够在后台保持音乐的播放。同时, 系统也将保持这个服务一直执行, 直到这个service运行结束。(能够经过阅读Life Cycle of an Android Application 获取更多关于服务的介绍)。另外
34、, 还能够经过使用Context.bindService() 方法, 连接到一个服务上( 如果这个服务还没有运行将启动它) 。当连接到一个服务之后, 还能够经过服务提供的接口与它进行通讯。拿媒体播放器这个例子来说, 还能够进行暂停、 重播等操作。内容提供器Content Provider应用程序能够将它们的数据保存到文件、 SQLite数据库中, 甚至是任何有效的设备中。当开发者想将其的应用数据与其它的应用共享时, 内容提供其将会很有用。一个内容提供器类实现了一组标准的方法, 从而能够让其它的应用保存或读取此内容提供器处理的各种数据类型。3.1.3 Android平台独特技术特征Dalvik虚
35、拟机Dalvik是Android平台的虚拟机, 它运行经过内存和运行效率优化的.dex格式文件。该虚拟机是基于寄存器的, 它能够执行由Java编译器编译的类, 只需将该编译结果用dx工具转换为本地格式的.dex文件。该虚拟机运行在Posix兼容的操作系统( 如Linux系统) 之上, 虚拟机会依赖底层操作系统的某些功能(如线程管理和内存管理)。Dalvik核心类库为之前使用标准Java语言的开发者提供了类似的开发体验, 它更提供了对小型移动设备的支持。Dalvik主要完成对象生命周期管理, 堆栈管理, 线程管理, 安全和异常管理, 以及垃圾回收等等重要功能。Dalvik虚拟机的主要特征由于An
36、droid的编程语言是Java语言, 因此许多人认为Dalvik虚拟机是一个Java虚拟机(JVM), Dalvik虚拟机并不是按照Java虚拟机的规范来实现的, 两者并不兼容。1 专有的DEX文件格式Java虚拟机运行的是Java字节码, 而Dalvik虚拟机运行的则是其专有的文件格式DEX( Dalvik Executable) 。在Java SE程序中的Java类会被编译成一个或者多个字节码文件( .class) 然后打包到JAR文件, 而后Java虚拟机会从相应的CLASS文件和JAR文件中获取相应的字节码; Android应用虽然也是使用Java语言进行编程, 可是在编译成CLASS
37、文件后, 还会经过一个工具( dx) 将应用所有的CLASS文件转换成一个DEX文件, 而后Dalvik虚拟机会从其中读取指令和数据。 图3.2 CLASS文件和DEX文件的转换DEX文件较之于CLASS文件的优势在于: l 一个应用中会定义很多类, 编译完成后即会有很多相应的CLASS文件, CLASS文件间会有不少冗余的信息; 而DEX文件格式会把所有的CLASS文件内容整合到一个文件中。这样, 除了减少整体的文件尺寸, I/O操作, 也提高了类的查找速度。原来每个类文件中的常量池, 在DEX文件中由一个常量池来管理l 增加了新的操作码的支持l 文件结构尽量简洁, 使用等长的指令, 借以提
38、高解析速度l 尽量扩大只读结构的大小, 借以提高跨进程的数据共享2DEX的优化 DEX文件的结构是紧凑的, 如果要求运行时的性能有进一步提高, 就依然需要对DEX文件进行进一步优化。优化主要是针对以下几个方面: l 调整所有字段的字节序( LITTLE_ENDIAN) 和对齐结构中的每一个域 l 验证DEX文件中的所有类 l 对一些特定的类进行优化, 对方法里的操作码进行优化 优化后的文件大小会有所增加, 应该是原DEX文件的1-4倍。优化发生的时机有两个: 对于预置应用, 能够在系统编译后, 生成优化文件, 以ODEX结尾。这样在发布时除APK文件( 不包含DEX) 以外, 还有一个相应的O
39、DEX文件; 对于非预置应用, 包含在APK文件里的DEX文件会在运行时被优化, 优化后的文件将被保存在缓存中。3基于寄存器Dalvik和标准Java虚拟机( JVM) 之间的首要差别之一, 就是Dalvik基于寄存器, 而JVM基于栈。选择基于寄存器的方式是因为它对提前优化( ahead-of-time optimization) 提供了更好的支持, 而这对类似于移动电话这样的受限环境是颇有裨益的。另一份针对基于寄存器虚拟机和基于栈虚拟机更深入的比较分析指出, 基于寄存器的虚拟机对于更大的程序来说, 在它们编译的时候, 花费的时间更短。相对于基于堆栈的虚拟机实现, 基于寄存器的虚拟机实现虽然
40、在硬件通用性上要差一些, 可是它在代码的执行效率上却更胜一筹。一般来讲, 虚拟机中指令的解释执行时间主要花在以下三个方面: l 分发指令 l 访问运算数 l 执行运算 其中”分发指令”这个环节对性能的影响最大。在基于寄存器的虚拟机里, 能够更为有效的减少冗余指令的分发和减少内存的读写访问, 如: 表示式: a = b + c基于栈的指令: ILOAD c, ILOAD b, IADD, ISTORE a基于寄存器的指令: IADD a, b, c4应用虚拟机实例进程Dalvik和Java之间的另外一大区别就是运行环境Dalvik经过优化, 允许在有限的内存中同时运行多个虚拟机的实例, 每一个A
41、ndroid应用都运行在一个Dalvik虚拟机实例里, 而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制, 内存分配和管理, Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程, 虚拟机能够更多的依赖操作系统的线程调度和管理机制。不同的应用在不同的进程空间里运行, 加之对不同来源的应用都使用不同的Linux用户来运行, 能够最大程度的保护应用的安全和独立运行。给每一个应用赋予独立的进程能够允许动态安装、 激活和去激活, 独立的进程能够防止在虚拟机崩溃的时候所有程序都被关闭。有一个特殊的虚拟机进程Zygote, 她是虚拟机实例的孵化器。每当
42、系统要求执行一个Android应用程序, Zygote就会FORK出一个子进程来执行该应用程序。它在系统启动的时候就会产生, 它会完成虚拟机的初始化, 库的加载, 预置类库和初始化的操作。如果系统需要一个新的虚拟机实例, 它会迅速复制自身, 以最快的速度提供给系统。对于一些只读的系统库, 所有虚拟机实例都和Zygote共享一块内存区域, 很大程度上节省了内存开销。图3.3 虚拟机实例内存共享原理图5低内存需求Dalvik虚拟机队内存的高效使用和它在低速CPU上表现出的高性能, 使之非常适合在移动终端上使用。根据Google的测算, 64M的RAM已经能够令系统正常运转了。其中24M被用于底层系
43、统的初始化和启动, 另外20M被用于高层启动高层服务。当然, 随着系统服务的增多和应用功能的扩展, 其所消耗的内存也势必越来越大。Dalvik需要的内存空间比其它虚拟机更低, 因为它有如下特性: 1)本身占用的空间更小; 2)Dalvik不使用及时编译器; 3)常量池使用32位的索引以简化解释器; 4)使用自有的字节码而非Java字节码。3.1.4 Android平台稳定性分析对于Android平台, 随着版本的不断升级, 系统的稳定性也会逐渐加强。众所周知, 在HTC推出她们的首款Android产品G1时虽然Android系统就已经拥有了不错的口碑可是其并没有在市场上引起轰动的效应, 原因自
44、然是G1当时所搭载的Android 1.1版本的系统无论在整体的稳定性方面还记基本功能方面都存在这样或者那样的缺陷有关。对于一款不稳定同时基本功能表现也不完美的系统厂家也不愿意去使用。然而Android 1.5的版本的发布却在一定程度上解决了上面的问题。系统稳定了不少, 不再像之前那样频繁报错了。同时在系统的基本功能上也改进了不少, 通话、 短信以及多媒体娱乐功能的加强使得Android系统符合了大多数厂商的要求, 因此在被足足掉了半年胃口的厂商们自然此时会蜂拥而至, Android系统的突然爆发也就不足为奇了。Android平台相对稳定原因在于Android每个应用都是独立的进程, 因此对于
45、普通的应用, 例如计算器、 资源管理器等, 如果出现异常不会导致其它应用出问题, 可是如果是关键应用异常, 如SystemServer、 PhoneApp等, 则会有比较大的影响, 比如某些状态不准确, 甚至所有应用不能正常启动等。这种特性应该是所有基于真正操作系统的手机都具备的。3.1.5 Android平台响应速度分析Android响应速度的提升主要指Java虚拟机的运行速度, 相对与Sun的虚拟机, 速度确实快很多, 因为它从代码解释执行方式到地层的C库都做了很多优化, 而且多个虚拟机最大程度共享资源。可是从界面操作速度的直观感受, 只是不比Windows Mobile慢, 这还跟不同型
46、号手机的处理能力, 以及不同功能的实现的算法有关系。从实现角度看, Android对于Java的运行速度已有很大提升。3.2 Windows里的Android开发环境搭建3.2.1 必备软件1、 jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_ .exe。2、 eclipse-SDK-3.4.2-win32.zip。3、 ADT-0.9.0.zip。4、 android-sdk-windows-1.5_r1.zip。版本不同可能会导致不兼容。出现各种错误。请上网查询。3.2.2 安装过程1、 jdk 1.6安装(双击jdk-6u10-rc2-bin-b32
47、-windows-i586-p-12_sep_ .exe)。选择安装路径为”E:androidjdk-6u10”, 安装完成后设置环境变量: 右击点我的电脑-属性-高级-环境变量, 双击PATH, 变量值中末尾加上”;E:androidjdk-6u10bin”。同时新建两个环境变量, JAVA_HOME, 变量值为: ”E:androidjdk-6u10”以及CLASSPATH, 变量值为: ”.”。2、 解压eclipse-SDK-3.4.2-win32.zip到目录”E:androideclipse-3.4.2”。不用安装, 绿色软件。3、 打开eclipse.exe。随意设置工作目录。选择Help-Software Updates-Available Software-Add Site -Archive. 选择ADT。(ADT必须0.9以上, 如: ADT-0.9.0.zip)在列表中勾选 jar:file:. A
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100