鱼乐Android app 性能分析DevSupport

Android性能优化之工具和优化点总结

2017-07-24  本文已影响6897人  业松

Android性能优化学习

本文为作者原创,转载请注明作者和出处

最近公司主抓性能优化工作,借此春风也学习到了许多Android性能优化方面的知识。由于组内队友的给力,优化的成果也是比较喜人。同时也学习和实践了不少知识,特此记录。

1.性能优化分析工具学习

工欲善其事,必先利其器。在开始代码优化之前,先得学会使用性能分析工具。以下三个工具都是谷歌官方推出的,可以帮助我们定位分析问题,从而优化我们的APP。

Systrace是一个收集和检测时间信息的工具, 它能显示CPU和时间被消耗在哪儿了, 每个进程和线程都在其CPU时间片内做了什么事儿. 而且会指示哪个地方出了问题, 以及给出Fix建议。给出的结果trace文件是以html形式打开的,直接用浏览器打开查看十分方便。打开方法:打开DDMS后,连接手机,点击手机上方一排按钮中的SysTrace按钮。
打开的效果如下图:

System Trace

在代码中打点方式如下

Trace.beginSection("name");
//要检测运行时间的代码
Trace.endSection();

Hierarchy Viewer提供了一个可视化的界面来观测布局的层级, 让我们可以优化布局层级, 删除多余的不必要的View层级, 提升布局速度。另外,开发者模式中调试GPU过度绘制选项也可以进行视图层级调试。在SDK-> tools目录下打开hierarchyviewer.bat即可。
效果如下图:

Hierarchy Viewer

一个图形化的工具, 用来展示和分析方法的执行时间。也是一款性能优化的神器。可以通过像打log一样的方式去定位代码的执行时间,从而可以准确定位是哪一段代码的执行消耗了太多时间。相比SysTrace,功能更强大,使用起来也更复杂。

TraceView

2.布局优化

布局优化相对比较容易,优化可以先从布局来展开。使用Hierarchy Viewer和开发者模式中关于布局绘制的选项,可以查到一些问题然后进行修改。

 <style name="MyStyle" parent="AppTheme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@null</item>  
 </style>

3.线程优化

线程的创建和销毁会带来比较大的性能开销。因此线程优化也很有必要。查看项目中是否存在随意new thread,线程缺乏管理的情况。使用AsyncTask或者线程池对线程进行管理,可以提升APP的性能。另外,我比较推荐使用Rxjava来实现异步操作,既方便又优雅。

推荐一篇Rxjava的入门文章

4.内存泄露

内存泄露会导致APP占用内存过高,影响效率,严重的话会导致OOM。因此如果项目存在内存泄露的话要优先解决。查找内存泄露可以用LeakCanary等工具,具体怎么解决,有哪些泄露点,以后有时间也写篇总结。

5.算法优化

毋庸置疑,使用合适的算法处理事务可以大幅提升APP的性能。当然算法不是我的强项,也只能给出一些大致的点:查询考虑二分查找节省时间,尽量不要使用耗时的递归算法。必要的时候可以空间换时间来提高APP运行效率。

6.其他优化点

7.总结

可以看到除了工具的使用外,性能优化是很考验代码功底的。因此想要做好性能优化,强化基本功不可少。性能优化也是一件相对枯燥而难度大的工作。因为很多优化的努力可能立马看不到效果,或者说优化的成果在数据上难以体现。我们在做性能优化的时候也遇到果瓶颈,找不到优化方向而感到泄气。但是坚持下来,利用好工具,从各个点去优化,总会有拨开云雾见青天的一天!

上一篇下一篇

猜你喜欢

热点阅读