Android 性能测试及优化
2016-08-30 15:02
162 查看
Android 开发,性能方面优化很重要,相对也比较难。有时候为了一点内存的优化,或者降低界面的绘制时间损耗,可以说是煞费苦心。接下来,就内存、layout两方面的优化,介绍一下。
一、内存直观的查看最容易的要是monitors里面memory展示图了,可以直观的查看内存的占用及走势。通过创建跟销毁activity,查看内存的变化,判断有没有内存泄漏等等。当然,这个只是一个简单的查看,不能详细的定位内存泄漏的具体位置。如果要找内存泄漏具体位置,需要android device monitor中 dump HPROF file,生成的文件,以前需要转化一下,用mat工具打开分析。现在大家都用androidstudio了,更加强大,只需要,将文件拖入androidstudio中即可打开,可以具体查看具体heap情况,信息非常详细,实乃内存分析一大利器。
二、layout性能问题,同样是android开发的一大问题。没人喜欢用一个卡顿,不流畅的app。理论上人眼识别是一秒60帧,及每帧16毫秒,这样才能出线流畅连贯的画面,否则就出现丢帧,造成看着卡顿等问题。这里的16ms指的是每个界面measure+layout+draw <= 16ms 。那么如何查看界面绘制时间呢?可以在设置》开发者选项》gpu呈现模式分析中选择一个,可以看条形图或线形图,也可以用adb shell dumpsys
gfxinfo中,得到数据查看时间有没有超过16ms。还可以通过hierarchyviewer工具查看(确保root、remount),查看每个界面根view的layout+draw+measure时间。更具体的分析当然要用traceview了,traceview可以直观的定位到问题所在,然后可去优化。
那平时开发中应该怎么注意,来尽量优化这些性能呢?有以下建议:
1、绘制界面时,只绘制可见区域
a、使用recyleview等可回收view控件;
b、懒加载数据;
2、控制图片占用内存
a、图片能用.9,尽量使用,使用wpeg格式图片格式
b、小图展示可以用tingPNG有损压缩
c、根据绘制窗口大小加载制定大笑的bitmap
3、避免频繁绘制、频繁reload,以及多余的reload
4、控制view数量,减少过度绘制,优化布局层次
5、采用线程池,限制线程数量、空闲存活时间,线程需要命名
6、关注scrolling状态,scrolling过程中不要操作ui
7、检查ui主线程中是否含有非ui操作逻辑,比如json解析、文件读写、数据库操作等。
一、内存直观的查看最容易的要是monitors里面memory展示图了,可以直观的查看内存的占用及走势。通过创建跟销毁activity,查看内存的变化,判断有没有内存泄漏等等。当然,这个只是一个简单的查看,不能详细的定位内存泄漏的具体位置。如果要找内存泄漏具体位置,需要android device monitor中 dump HPROF file,生成的文件,以前需要转化一下,用mat工具打开分析。现在大家都用androidstudio了,更加强大,只需要,将文件拖入androidstudio中即可打开,可以具体查看具体heap情况,信息非常详细,实乃内存分析一大利器。
二、layout性能问题,同样是android开发的一大问题。没人喜欢用一个卡顿,不流畅的app。理论上人眼识别是一秒60帧,及每帧16毫秒,这样才能出线流畅连贯的画面,否则就出现丢帧,造成看着卡顿等问题。这里的16ms指的是每个界面measure+layout+draw <= 16ms 。那么如何查看界面绘制时间呢?可以在设置》开发者选项》gpu呈现模式分析中选择一个,可以看条形图或线形图,也可以用adb shell dumpsys
gfxinfo中,得到数据查看时间有没有超过16ms。还可以通过hierarchyviewer工具查看(确保root、remount),查看每个界面根view的layout+draw+measure时间。更具体的分析当然要用traceview了,traceview可以直观的定位到问题所在,然后可去优化。
那平时开发中应该怎么注意,来尽量优化这些性能呢?有以下建议:
1、绘制界面时,只绘制可见区域
a、使用recyleview等可回收view控件;
b、懒加载数据;
2、控制图片占用内存
a、图片能用.9,尽量使用,使用wpeg格式图片格式
b、小图展示可以用tingPNG有损压缩
c、根据绘制窗口大小加载制定大笑的bitmap
3、避免频繁绘制、频繁reload,以及多余的reload
4、控制view数量,减少过度绘制,优化布局层次
5、采用线程池,限制线程数量、空闲存活时间,线程需要命名
6、关注scrolling状态,scrolling过程中不要操作ui
7、检查ui主线程中是否含有非ui操作逻辑,比如json解析、文件读写、数据库操作等。
相关文章推荐
- android TraceView使用以及listview 的性能优化测试(一)
- android TraceView使用以及listview 的性能优化测试(一)
- Android 总结:AS入门,性能优化,性能专项测试,分析工具的使用
- Android学习之笔记---traceView的测试与android的性能优化
- android TraceView使用以及listview 的性能优化测试(二)
- Android自动化测试及性能优化
- android TraceView使用以及listview 的性能优化测试(二)
- Android UI性能专项测试及优化
- android TraceView使用以及listview 的性能优化测试(一)
- android TraceView使用以及listview 的性能优化测试(一) .
- 性能调优项目测试与优化
- 不断优化配置,逐步提高性能——我的一次性能测试经历
- windows中apache2配置性能优化以及测试小结
- apache2配置优化以及性能测试小结
- Android代码性能优化技巧
- 全面测试嵌套多层For循环的性能和优化方案
- Android 性能优化一例(Bitmap创建时会调用gc)
- 网站优化-HTTP REQUEST与web service 性能测试比较
- apache2配置优化以及性能测试小结
- 127168420条记录的SQL2005数据库性能测试,程序人生的一次飞跃(上亿条记录的查询测试、查询优化)