当前位置: 首页 > 科技观察

Android应用快速入门的8个秘诀

时间:2023-03-12 14:14:15 科技观察

编者按:我们为大家推出了一个独家专题:Android开发应用详解。本文将为您介绍Android应用开发快速上手的8个秘诀,告诉您为什么Android的效率如此之高!Android系统框架和上层应用都是类Java开发的(不是正统的sunJava),实现了自己的Java虚拟机Dalvik。由于是用Java虚拟机和Java开发的,所以一般认为效率低下。事实上,在主流智能手机的软件平台上,安卓系统的执行速度是最快的。那么Android的效率为什么这么高呢?特别是应用程序的启动时间非常短。本文主要分析以下八个方面:资源文件的优化读取。我们知道Android在UI开发上有很大的优势。xml文件来描述UI,这样的好处是只要修改UI就可以修改界面的布局、显示风格、字体大小,无需修改代码。接口定义变得灵活方便。qtopia中也使用了xml配置UI,但是功能太强大了,没有被广泛使用,因为xml文件有一个缺点,就是解析xml的效率很低。安卓是怎么做到的?Android在编译时优化了xml文件,Android应用程序在解析时变得非常高效。我们看到APK文件解压后,会有一个优化过的资源文件。安装时优化dex文件Android应用程序被打包成一个APK文件,实际上是一个zip文件。系统首次启动或应用程序首次安装时,系统解压APK文件,将可执行文件dex优化为odex文件,放入/data/Dalvik-cache目录下。优化后的dex文件启动速度会更快。这就解释了为什么Android系统第一次启动很慢,然后起来很快。有人可能会问:为什么不直接在编译时优化呢?项目⑤将回答这个问题。制作数据库Android图形应用程序加载了整个sd卡中的所有图像,但为什么这么快?其实Android是提前把数据做成数据库的,所以不需要每次都扫描整个sd卡,大大加快了启动速度。高效虚拟机Android基于类Java虚拟机Dalvik,通用Java虚拟机基于栈,而Dalvik基于寄存器。说实话,我对两者的区别了解不深,但是网上有专门的相关文献可以分析。我的简单理解是栈的实现比较容易,相关数据在内存中就在栈中,操作寄存器中数据的速度明显比在内存中处理数据要快。充分挖掘CPU的性能虽然Android刚出来的时候支持armcpu,但实际上只支持armv5te的指令集,因为Android系统专门针对armv5te进行了优化,充分利用了armv5te的执行流水线,提高了效率ofexecution,同样是在500M的三星2440上运行的不是很好,之所以能在200M的omapcpu上运行流畅,是因为最新的代码中有针对x86和armv4的优化部分。优化定制的libc库libc库几乎是所有库和程序的基础,但Android并不直接使用libc库,而是自己开发了一个库:bionic,它实现了libc库的大部分功能,并根据平台执行.优化,但不支持少数系统很少使用且占用资源的功能。只有几百k,节省了空间,提高了执行效率。其实就是体现了20-80原则,抓几个重要的,舍弃不需要的。充分利用linux系统的特点。分析过linux内核的朋友都知道,linuxfork一个新进程是非常高效的,采用了COW机制。Android是每个进程一个独立的虚拟机(听说这样设计是出于安全考虑,某个时候某个进程崩溃不会影响本系统和其他进程。)Android中每个进程都是基于一个虚拟机,并且还要加载基本库,这些实际上是共享的。所以Android在启动一个新程序时实际上并不会消耗大量的内存和cpu资源。同时,Android有一个空进程在后台运行。实际上,它正在运行一个虚拟机。当一个应用程序要启动时,它会直接在上面继续运行。qtopia也有这个机制。Android系统启动过程中:启动虚拟机——“启动系统服务器?”启动启动器。刚开始分析代码的时候,我想为什么不直接启动系统服务器呢?(qtopia是直接启动服务器),其实是利用了linux的这个特性。这个特性比较简短,但是要真正把他解释清楚可能要花很多篇幅。高效的paint机制可能与启动关系不大,但也是Android高效的特性之一。大多数界面变化不是全屏内容变化,而是局部变化。Android只会根据变化的内容更新部分内容,这样也提高了效率。这也提醒我们,在开发应用程序时,重载paint方法时尽量不要绘制全屏内容。PhoneClub——移动开发线下技术沙龙活动日期:1月15日发行主题:Android应用开发高级技术地点:北京市海淀区中关村南大街30号东联艺术工作室讲师:范怀宇(网易)点击报名【小编推荐】Android2.3SDK安装教程详解多图Android2.3SDK开发文档同步更新下载Android平台SQLite快速入门实践Android2.3六大创新剑峰直指iOS4.2Android2.3正式发布11大新特性与改进