前言
本来是打算直接放问题的,怕大家不理解,而且之前也没写过性能优化的文章,所以这篇就当一篇教程来写会更容易理解
1.Android的分析工具
- Android studio3.0的Android Profiler(和之前的版本增加了很多功能,不会用的可以百度)
Android Profiler现在显示的共享时间线视图中(见下图),包含了CPU,存储器和网络使用情况的实时图形的时间线。窗口还包括③时间轴缩放控制,④一键向前跳到实时更新,和⑤一个事件时间线展示出活动状态,用户输入事件,以及屏幕旋转事件。
-
Traceview
可能有些人没听过这个,待我放个截图你就恍然大悟了
怎么用呢?
其实也很简单,第一步点击你的项目,然后再点击下图画圈的图标,然后在模拟器上自己点点项目,然后再点击这个图标,就会得到你刚才点击项目的分析图,然后看看那些地方耗时最多,具体流程这里不做讲解了,可以自行百度
- 当然还有更多
想了解的可以去看这篇文章
App优化之性能分析工具
2.代码优化 Android Lint的使用
Lint 是Android Studio 提供的 代码扫描分析工具,它可以帮助我们发现代码结构/质量问题,同时提供一些解决方案,而且这个过程不需要我们手写测试用例。
Lint 发现的每个问题都有描述信息和等级(和测试发现 bug 很相似),我们可以很方便地定位问题,同时按照严重程度进行解决。
怎么用
Lint 的使用路径:
工具栏 -> Analyze -> Inspect Code…
点击
Inspect Code
后会弹出检查范围的对话框:
[图片上传失败...(image-4e1107-1512891863068)]
默认是检查整个项目,我们可以点击
Custom scope
自定义检查范围。
点击右边的下拉框,会出现以下选择:
建议大家亲自使用一下这个工具,用的时候选择整个项目,你会得到很多优化方面的知识点
3.怎么优化你的布局
通过以上工具的使用和分析, 也基本能找到布局的一些常见的好与不好的了.
正所谓授之以鱼不如授之以渔. 在此也就不太详细去讲怎么优化了, 几点建议, 大家自行实践吧:)
尽量减少布局层级和复杂度
- 尽量不要嵌套使用RelativeLayout.
- 尽量不要在嵌套的LinearLayout中都使用weight属性.
- Layout的选择, 以尽量减少View树的层级为主.
- 去除不必要的父布局.
- 善用TextView的Drawable减少布局层级
善用Tag
- <include>
使用include来重用布局. - <merge>
使用<merge>来解决include或自定义组合ViewGroup导致的冗余层级问题. 例如本例中的RepoItemView的布局文件实际可以用一个<merge>标签来减少一级. - <ViewStub>