文档章节

《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
朝阳
私信 提问
Xamarin发布XobotOS源码,C# 实现的Android系统

  Xamarin 团队(前身为 Mono 团队)近来一直在尝试使用 C# 移植 Android 操作系统,并完全替代其中的 Java 代码。之前,该团队推出了 Mono for Android,使得开发者可以使用 C# 来开发 An...

墙头草
2012/05/07
58
0
Android--面试中遇到的问题总结(三)

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

sealin
2017/02/22
0
0
Xamarin:使用C#移植Android操作系统

Oracle和Google针对Android中Java的专利问题鏖战正酣,与此同时Xamarin正在尝试使用C#移植Android操作系统,完全替换其中的Java代码。虽然这Xamarin表明这不会是公司的主要业务,但这依然会是...

虫虫
2012/05/04
9.8K
20
Android程序员需要了解多少Java设计模式,Android应用经常使用的设计模式是什么?

Android程序员需要了解多少Java设计模式,Android应用经常使用的设计模式是什么? 熟悉Java设计模式、Android系统框架及相关SDK; 3、有丰富的开发经验,熟悉Android各种软件环境的特性; 4、能...

天池番薯
2015/04/24
66
0
性能优化之Java(Android)代码优化

最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇——Java(Android)代码优化。主要介绍Java代码中性能优化方式及网络优化,包括缓存、异步、...

Trinea
2013/08/26
2.5K
1

没有更多内容

加载失败,请刷新页面

加载更多

case when then

case具有两种格式。简单case函数和case搜索函数。 --简单case函数case sex when '1' then '男' when '2' then '女’ else '其他' end--case搜索函数case when sex = '1' the...

architect刘源源
10分钟前
0
0
Kubernetes探秘—kubelet的配置参数

kubelet是Kubernetes中的核心组件,需要在每一个节点安装,也是kubernetes集群启动的第一个服务。kubelet的参数存放在多个目录,修改时如果不完整就会导致各种错误,下面我们kubelet的参数存...

openthings
14分钟前
0
0
如何通过 MySQL 的二进制日志恢复数据库数据

经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分享学习下如何通过 MySQL 的二...

吴伟祥
22分钟前
1
0
org.apache.catalina.startup.Catalina stopServer SEVERE: Could not contact localhost:8005. Tomcat may

org.apache.catalina.startup.Catalina stopServer SEVERE: Could not contact localhost:8005. Tomcat may 2017年07月21日 14:52:10 子木HAPPY阳VIP 阅读数:14134 标签: tomcatnginx 更多......

linjin200
24分钟前
1
0
线下工坊|Blockchain Coding Day:零基础教你开发DAPP(北京)

我们的目标是通过编程学习让你更了解区块链技术。这将对区块链开发初学者一次很好的体验。这里需要强调一下,编程零基础也能学会。 我们将以小组的形式,由教练带领学员完成DAPP开发。每位学...

HiBlock
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部