关闭

Android 性能测试及优化

标签: 性能优化性能测试android
131人阅读 评论(0) 收藏 举报
分类:

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解析、文件读写、数据库操作等。


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8479次
    • 积分:198
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:1篇
    • 译文:1篇
    • 评论:1条
    文章分类