Android 性能优化

来源:互联网 发布:2016高速公路数据分析 编辑:程序博客网 时间:2024/06/03 12:25

app的功能现在日益复杂,同时对页面的运行速度,响应速度也有了更高的要求,本文章介绍了几种比较常见的性能检测工具,性能优化方式。

Android性能优化主要进行布局优化和内存优化。

1.布局优化

(1)避免过度绘制。

Android系统提供检测过度绘制的工具,开发者选项中 “Enable GPU Overdraw”,根据颜色不同,可产看是否过度绘制,尽量增大蓝色区域,减少红色区域。同时也可以使用“Profile GPU Rendering”,翻译过来就是GPU呈现模式分析,选择条形图。中间的绿色横线代表绘制时间为16ms,黄色代表绘制DIspaly List的时间,红色代表OpenGL渲染Display List所需要的时间,黄色代表Cpu等待GPU处理的时间,其中蓝色参考度最大,蓝色代表绘制时间。按照Gooogle官方给出的性能优化 标准,60fps为最佳,这要就每帧绘制时间不超过16ms。

Original colour – 没有过度绘制,只在屏幕上绘制过一次

Blue – 1x – 过度绘制,在屏幕上绘制过2次

绿色 Green – 2x – 过度绘制,在屏幕上绘制过3次

浅红 Pink – 3x –过度绘制,在屏幕上绘制过4次

暗红 Red – 4x – 过度绘制,在屏幕上绘制过5次 。

(2)优化布局层级。

Android中,对View的测量、绘制都是通过对View的遍历来进行操作的。Google在Api文档中建议View的高度不宜超过10层。

(3)避免嵌套过多布局。

**<include>**

界面共同的布局,可以使用标签加载到不居中。

**<merge>**

一般与同时是使用,例如当前布局为垂直布局,包含布局也为垂直布局,可使用merge,包含布局种的内容会被直接添加到当前布局中。

**<ViewStub>**

延迟加载,不可视,大小都为0,只有在显示的时候才会渲染,在初始加载中不显示可使用。
可使用setVisbility()或viewStub.inflate()显示布局。

(4)Hierarchy View。

在模拟器下查看布局层级,通过hierarchy view 可以很快在视图树种找到冗余的布局,达到优化效果。
该工具位于sdk/tools。

2.内存优化

Android的内存指手机ram,包括:

  • 寄存器:无法控制。
  • 栈 :存放基本类型的数据,对象的引用,
  • 堆 :存放由new 创建的对象和数组 由Gc管理。
  • 静态存储区域 :静态变量。
  • 常量池:jvm为每个被装载的类型维护一个常量池。

(1)内存泄漏优化

1.bitmap优化。
使用适当分辨率和大小的图片,通过使用内存缓存和硬盘缓存更好的使用bitmap。
2.静态变量。
静态变量包含当前activity。
3.单例模式。
单例模式的生命周期和application相同。
4.属性动画。
无限循环动画在activity未停止动画。
(2)代码建议
1.对常量使用static final修饰
2.避免创建过多对象
3.尽量不要使用枚举,少用迭代器
(3)内存泄漏工具
MAT工具:打开DDMS,选择监听的线程,点击菜单栏中的“Update Heap”,在Heap标签中,点击“Cause GC”,显示当前内存状。
点击菜单栏的“Dump HPROF File”,等待几秒 ,会生成.hprof文件,使用sdk/platform-tools,hprof-conv进行转换,命令格式为“hprof-conf infile outfile”,使用生成的heap.hprof文件就可以利用Mat工具进行内存分析了。

原创粉丝点击