作者:张明云
链接:http://zhuanlan.zhihu.com/zmywly8866/20416881
来源:知乎
最近这段时间一直在做android应用的性能优化,一个应用性能的好坏并不能依靠我们的主观意识去评判,必须要看数据说话,因此必须要了解和学会使用各种性能测试工具才知道问题出在哪以及具体的优化方向。下面对我对性能优化的理解以及在性能优化过程中使用到的一些工具作个介绍。
零 性能指标
Android的应用性能的指标主要有:
布局复杂度:布局复杂会导致布局需要更长的时间,从而导致进入应用慢、页面切换慢;
耗电量:耗电量大会导致机器发热、缩短机器的有效使用时长;
内存:内存消耗大会导致频繁GC,GC时会暂停其它工作,导致页面卡顿;内存泄露会导致剩余可用内存越来越小;内存不足会导致应用异常;
网络:频繁的网络访问会导致耗电和影响应用的性能;网络交互数据大小会影响网络传输的效率;
程序执行效率:糟糕的代码会严重影响程序的运行效率,UI线程过多的任务会阻塞应用的正常运行,长时间持有某个对象会导致潜在的内存泄露,频繁的IO操作、网络操作而不用缓存会严重影响程序的运行效率。
一 Android官方性能优化工具介绍
android针对上面这些会影响到应用性能的情况提供了一些列的工具:
1 布局复杂度:
hierarchyviewer:检测布局复杂度,各视图的布局耗时情况:
Android开发者模式—GPU过渡绘制:
2 耗电量:Android开发者模式中的电量统计;
3 内存:
应用运行时内存使用情况查看:Android Studio—Memory/CPU/GPU;
内存泄露检测工具:DDMS—MAT;
4 网络:Android Studio—NetWork;
5 程序执行效率:
静态代码检查工具:Android studio—Analyze—Inspect Code.../Code cleanup... ,用于检测代码中潜在的问题、存在效率问题的代码段并提供改善方案;
DDMS—TraceView,用于查找程序运行时具体耗时在哪;
StrictMode:用于查找程序运行时具体耗时在哪,需要集成到代码中;
Andorid开发者模式—GPU呈现模式分析。
6 程序稳定性:monkey,通过monkey对程序在提交测试前做自测,可以检测出明显的导致程序不稳定的问题,执行monkey只需要一行命令,提交测试前跑一次可以避免应用刚提交就被打回的问题。
说明:
上面提到的这些工具可以进Android开发者官网性能工具介绍查看每个工具的介绍和使用说明;
Android开发者选项中有很多测试应用性能的工具,对应用性能的检测非常有帮助,具体可以查看:All about your phone's developer options和15个必知的Android开发者选项对Android开发者选项中每一项的介绍;
针对Android应用性能的优化,Google官方提供了一系列的性能优化视频教程,对应用性能优化具有非常好的指导作用,具体可以查看:优酷Google Developers或者Android Performance Patterns。
二 第三方性能优化工具介绍
除了android官方提供的一系列性能检测工具,还有很多优秀的第三方性能检测工具使用起来更方便,比如对内存泄露的检测,使用leakcanry比MAT更人性化,能够快速查到具体是哪存在内存泄露。
leakcanary:square/leakcanary · GitHub,通过集成到程序中的方式,在程序运行时检测应用中存在的内存泄露,并在页面中显示,在应用中集成leancanry后,程序运行时会存在卡顿的情况,这个是正常的,因为leancanry就是通过gc操作来检测内存泄露的,gc会知道应用卡顿,说明文档:LeakCanary 中文使用说明、LeakCanary: 让内存泄露无所遁形。
GT:GT Home,GT是腾讯开发的一款APP的随身调测平台,利用GT,可以对CPU、内存、流量、点亮、帧率/流畅度进行测试,还可以查看开发日志、crash日志、抓取网络数据包、APP内部参数调试、真机代码耗时统计等等,需要说明的是,应用需要集成GT的sdk后,GT这个apk才能在应用运行时对各个性能进行检测。
iTest:iTest,业内首创的Android自动化性能监控工具,它能够记录特定应用的性能消耗情况,包括cpu、内存、流量、电量等信息,支持浮窗实时查看应用的具体信息,iTest不需要集成sdk到应用中,在itest中选中需要测试的应用即可进行测试;
Emmagee:Emmagee下载、NetEase/Emmagee · GitHub,网易开发的性能检测工具,Emmage和iTest一样,不需要在应用中集成sdk,能够对应用的常用性能指标进行检测,并以csv的格式保存方便查看应用的各项参数;
APT:Tencent/apt | CODE,腾讯出的,暂时还没使用过,无法评价。
FPSService:百度一位开发者写的帧率测试工具,需要集成到应用中才可查看:
三 应用性能优化资料推荐
首页 - 专注安卓性能优化以及最佳实践的
Blog Archive
Android Performance Patterns
Best Practices for Performance
另一个专注应用性能优化的博客