文档章节

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

k
 kim366
发布于 2016/05/13 19:15
字数 636
阅读 3
收藏 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
61
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.9K
20
Android程序员需要了解多少Java设计模式,Android应用经常使用的设计模式是什么?

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

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

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

Trinea
2013/08/26
2.6K
1

没有更多内容

加载失败,请刷新页面

加载更多

spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部