Android高效编程指南.ppt_第1页
Android高效编程指南.ppt_第2页
Android高效编程指南.ppt_第3页
Android高效编程指南.ppt_第4页
Android高效编程指南.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android高效编程指南 2010年03月 两个基本的原则 不要做不必要做的事情尽可能的节省内存的使用 尽可能避免创建对象1 AvoidCreatingObjects 越少的对象创建意味着越少的垃圾回收 这会提高你程序的用户体验质量 例子 尽量少创建没用的临时变量 尽可能避免创建对象2 AvoidCreatingObjects 尽量使用一维数组代替多维数组 将多维数组分割成几个平行的一维数组 如 两个平行的Foo 和Bar 要比一个 Foo Bar 对象数组的效率高得多 使用原生方法 UseNativeMethods 尽量使用对象自身带有的接口方法 因为这些方法有些是使用C编写的 比自己用Java编写的效率高 如String indexOf String lastIndexOf 使用实现优于使用接口 PreferVirtualOverInterface 1 MapmyMap1 newHashMap 常规编程2 HashMapmyMap2 newHashMap 嵌入式编程接口方法的调用比实现类方法的调用会花费2倍以上的时间 多使用接口的具体实现类 使用静态优于使用虚拟 PreferStaticOverVirtual 给方法加上static 如果你没有必要去访问实例 对象 的变量 那么使你的方法成为静态方法 它会被更快的调用 因为它不需要一个虚拟函数导向表 给属性加上static 如果您的变量不需要被每个实例 对象 分享 那么使你的属性成为静态属性 它会被更快的调用 因为JVM只为静态分配一次内存 而非静态变量 每创建一个实例时 JVM就为非静态变量分配一次内存 内在避免使用Get Set方法 AvoidInternalGetters Setters 外部调用时使用Get和Set函数 但是在内部调用时 我们应该直接调用 虚方法的调用比实例属性查询的代价还要多 缓冲对象属性调用 CacheFieldLookups 访问对象属性要比访问本地变量慢得多 不要这样写 for inti 0 i this mCount i dumpItem this mItems i 应该这样写 intcount this mCount Item items this mItems for inti 0 i count i dumpItems items i 声明Final常量 DeclareConstantsFinal staticintintVal 42 staticStringstrVal Hello world 当类被创建时 编译器会调用一个类初始化方法 这个方法会对intVal和strVal进行初始化处理 可以写成如下 staticfinalintintVal 42 staticfinalStringstrVal Hello world 初始化是由虚拟机来处理的 所以类的创建将更快 慎重使用增强型For循环语句 UseEnhancedForLoopSyntaxWithCaution 增强的for循环在数组里面性能很好 但是当和Iterable对象一起使用时要谨慎 因为这里多了一个对象的创建 避免使用枚举 AvoidEnums publicclassFoo publicenumShrubbery GROUND CRAWLING HANGING 这会转变成为一个900字节的class文件 Foo Shrubbery class 第一次使用时 类的初始化要在独享上面调用方法去描述列举的每一项 每一个对象都要有它自身的静态空间 整个被储存在一个数组里面 一个叫做 VALUE 的静态数组 那是一大堆的代码和数据 仅仅是为了三个整数值 代价很高 通过内联类使用包空间 UsePackageScopewithInnerClasses 建议使用内部类 避免浮点类型的使用 AvoidFloat 尽量避免使用float类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论