Android 性能测试及优化

原创 2016年08月30日 15:02:05

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android中json的解析优化

在安卓网络app开发中,由于服务器和客户端使用json字段串通信,但是android自带的json解析类不够强大,比如要实现一个users(装user的list)解析,json串如下, {"stat...
  • huweigoodboy
  • huweigoodboy
  • 2014年05月05日 17:06
  • 1042

WEB前端性能测试优化指标

加快您的网站的最佳实践 1、Make fewer HTTP requests (最大限度地减少HTTP请求) 终端用户响应的时间中,有80%用于下载各项内容。这部分时间包括下载页面中的图像、样式表...
  • cc297322716
  • cc297322716
  • 2016年09月11日 18:00
  • 967

redis及集群性能测试

Redis集群 文章汇总来源:由Drizzt0878大神提供 1      背景 这段时间项目需要对缓存进行集群,以下通过对redis集群研究与测试,对比直接采用单机内存缓存方式的性能。文章记录...
  • xiaoguaihu12
  • xiaoguaihu12
  • 2017年03月15日 09:13
  • 4424

爱测未来性能-前端性能测试平台及应用

性能测试一直是Web应用中非常受关注的部分。目前人们对性能的关注还主要集中在服务端,大部分人在说到“性能测试”的时候,都会把重点放到服务端的性能测试和调优,也就是通过各种方法找到服务端的性能瓶颈并尝试...
  • itest_2016
  • itest_2016
  • 2017年06月05日 15:52
  • 315

浅谈服务器性能测试的全生命周期——从测试、结果分析到优化策略

服务器性能测试是一项非常重要而且必要的工作,本文是作者Micheal在对服务器进行性能测试的过程中不断摸索出来的一些实用策略,通过定位问题,分析原因以及解决问题,实现对服务器进行更有针对性的优化,提升...
  • wetest_tencent
  • wetest_tencent
  • 2016年06月17日 16:08
  • 5019

性能测试过程中部分指标和系统性能的关系

看到的一篇文章,整理了部分关于性能测试分析的一点思路,我感觉应该是使用LR或者Jmeter的时候,需要的一些知识储备,所以转载记录一下,如在今后的学习中,发现了一些更加完善或者更实用的文章,可能或继续...
  • quiet_girl
  • quiet_girl
  • 2016年02月19日 14:33
  • 763

性能测试及分析调优准则

7.1附录1:执行性能测试基本原则   原则一:测试前,要确认系统级的关键参数已经基本配置正确(例如:数据库、WEB容器、线程池、JDBC连接池、对象池、JVM、操作系统、应用系统等配置);   ...
  • wma1314
  • wma1314
  • 2016年03月18日 14:40
  • 637

【吐槽篇之经验<二>】SSH架构性能优化经验总结

说明:此优化基于下列平台技术和服务器等, Struts2.1.8  、Spring 3.0  、Hibernate3.0  ;Tomcat   6.0 应用服务器;  JDK 1.6 ;     连...
  • zouxiongqqq
  • zouxiongqqq
  • 2014年02月24日 10:24
  • 1311

nginx服务,HTTPS_性能测试调优(辅助同事一起测试研究的)

HTTPS_性能测试调优,ssl握手时间优化
  • xiaozhiit
  • xiaozhiit
  • 2017年03月17日 18:07
  • 866

简单性能测试函数模板

刚买到《C++ Primer》第五版中文版,看了几章内容,深感C++11之完善。因学习过程中经常要写点片段代码,故写了个耗时测试函数模板,以测试代码性能。此测试函数使用了C++11的可变参数模板和右值...
  • toya_k
  • toya_k
  • 2015年08月06日 19:53
  • 205
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 性能测试及优化
举报原因:
原因补充:

(最多只允许输入30个字)