文档章节

《Android应用性能优化》第一章 Java代码优化

k
 kim366
发布于 2016/05/13 19:15
字数 636
阅读 2
收藏 0
1.1 Android执行代码的流程
       Android开发者使用Java,不过Android平台不用Java虚拟机来执行代码,而是把应用编译成Dalvik字节码,使用Dalvik虚拟机来执行。Java代码仍然编译成Java字节码,但随后Java字节码会被dex编译器(dx, SDK工具)编译成Dalvik字节码,最终,应用只包含Dalvik字节码, 而不是Java字节码。
      
       apk文件只是简单的zip压缩文件,可以使用常见的压缩工具查看apk文件的内容。

       虚拟寄存器是指实际上非真实的硬件寄存器,也就是Dalvik虚拟机使用的寄存器。

       在Android2.2和更高版本中引入了JIT(实时编译器),Dalvik JIT编译器把Dalvik字节码编译成本地代码,这可以明显加快执行速度。因为:
      本地代码由CPU执行,而不必由编译器解释执行。
      本地代码可以为特定架构予以优化。


1.2 从递归到迭代
      选择最佳算法。
      基于性能方面的考虑,在代码的关键路径上,要尽量避免内存分配。

     
1.3 缓存结果
      比如使用SparseArray比使用HashMap效率更高。
      在合适的地方使用LrcCache进行缓存。


1.4 API等级
      应用中manifest文件中使用下面两个属性:
      android:minSdkVersion
      android:maxSdkVersion
      根据属性指定对应的方法操作。例如
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES_HONEYCOMB){
             sparseArray.removeAt(1); 
      }else{
             int key = sparseArray.keyAt(1);
             sparseArray.remove(key);
      }


1.5 数据结构
      好的算法和数据结构是实现快速应用的关键。  
     1. 好的算法和数据结构是实现快速应用关键。
     2. 尽量使用考虑到优化的数据结构,如LruCache, SparseArray, SparseBooleanArray, SparseIntArray, Pair。
     3. 使用现有的类Arrays, Collections完成一些基本操作。
     4. 使用StringBuilder代替String。


1.6 响应能力
     关键点:要让用户感觉到快。优化的原则是保持应用的持续响应。
     处理方式:
     1. 延迟创建对象。
     2. 降低布局复杂度。使用RelativeLayout代替嵌套LinearLayout, 尽可能保持“扁平化布局”。尽量减少创建对象的数量,让事件处理速度加快。
     3. 可以通过把操作转移到非主线程来加快响应速度。
     4. 通过StrictMode分析速度缓慢原因。网络和文件操作放到子线程中完成。


1.7 SQLite
      1. 充分考虑数据库创建,事务处理,检索查询等方式。  






本文转载自:http://blog.csdn.net/oyangyujun/article/details/47361279

共有 人打赏支持
k
粉丝 1
博文 129
码字总数 0
作品 0
朝阳
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0
android -------- java虚拟机和Dalvik虚拟机

java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚...

切切歆语
04/29
0
0
bitmap设置图片尺寸缩小,避免内存溢出/OutOfMemoryError的优化方法

我们都知道Android的Dalvik VM为一个应用提供了大约16MB的内存,一般我们处理超过8MB的图片将会出现OutOfMemoryError异常(内存溢出异常),报如下错误: 20155392-byte external allocatio...

DD2086
2011/12/01
0
0
Android应用开发以及设计思想深度剖析(4)

特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处。作者系LiAnLab.org资深Android技术顾问吴赫老师。本系列文章交流与讨论:@宋宝华Barry 紧接连载三,我们接下从性能的角度分别分...

21cnbao
2012/09/25
0
0
Android性能优化:手把手带你全面实现内存优化

前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的内存优化,希望你们会喜欢 目录 1. 定义 优化处理 应用程序的内存使用、空间占用 2. 作用 避免因不正确使用内存 & 缺...

codeGoogle
05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis中jdbcType和javaType的对应关系 

Mybatis中jdbcType和javaType的对应关系 1 JDBC Type Java Type 2 CHAR String 3 VARCHAR String 4 LONGVARCHAR String 5 NUMERIC java.math.BigDecimal 6 DECIMAL java.math.BigDecimal 7 ......

DemonsI
26分钟前
3
0
Python中字符串和datetime

遇到的问题: 今天在写一个爬虫时,需要将今天的数据和昨天、一周前的数据做比较。所以就需要一个方法可以方便的计算出指定日期的前几天的日期。比如10月3号,则一周前的日期是9月26号。 问题...

akane_oimo
29分钟前
1
0
企业级 SpringBoot 教程 (四)SpringBoot 整合JPA

JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA 的目标之一是制定一个可以由很多供应商实现的API,并且开发...

itcloud
30分钟前
2
0
白话SpringCloud | 第六章:Hystrix监控面板及数据聚合(Turbine)

前言 前面一章,我们讲解了如何整合Hystrix。而在实际情况下,使用了Hystrix的同时,还会对其进行实时的数据监控,反馈各类指标数据。今天我们就将讲解下Hystrix Dashboard和Turbine.其中Hys...

oKong
40分钟前
2
0
Java JDK 11:现在可以使用所有新功能

删除了CORBA,Java EE和JavaFX支持,但添加了十几个主要新功能 目录 哪里可以下载JDK 11 Java 11 JDK中的新功能 从Java JDK 11中删除了什么 Java Development Kit(JDK)11现已普遍可用,可供...

GuoMengyue
42分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部