Android 性能测试及优化

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值