文章参考:
微信公众号:AndroidDeveloper—-Android性能优化总结
性能指标:
1.布局复杂度
2.耗电量
3.内存
4.网络
5.程序执行效率
一、布局复杂度的优化
实现相同界面效果并且层级结构相同时,选用何种Layout最好
FramLayoiut>LinearLayout>RelativeLayout
参考连接:Android中RelativeLayout与LinearLayout的性能分析
小结:RelativeLayout会让子View调用两次onMeasure(),而LinearLayout只有在有weight属性时,才会这样
- RelativeLayout的子View的高度如果和RelativeLayout不一致,则会导致效率问题,子View越复杂越严重。所以如果可以,尽量使用padding代替margin
- 尽量使用组合控件,如图片和文字的结合
- 减少布局的层级结构
- 两个工具
- HierarchyViewer: SDK中的tools目录下
- 无线UIViewer:一款app,手机版的HierarchyViewer
- include标签:适用于复用性高的xml
- merge标签:父布局和子部局的根布局是同一布局时,可以将子部局的根布局替换成merge
- ViewStub:这是一个延迟加载的布局,只有手动设置Visibility或者inflate的时候,才会真正绘制
- 两个工具
二、GPU过度绘制
- 定义:在屏幕的同一个像素上绘制多次
- 分析:过度绘制其实是性能和设计的一个交叉点。一般来说,视觉效果越华丽,过度绘制就会越严重。
- 检测:在手机端,设置–开发者模式–调试GPU过度绘制–显示过度绘制区域
- 优化方法:
- 减少没有必要的背景
- 使用ViewStub,减少View的绘制
- 可能的话,动态的inflate布局
- 减少Layout的层级
Android中耗电量的测试
这个个人认为,只能靠优化代码逻辑,减少不必要的调用系统资源,如音频,视频等等
内存
- LeakCanary:一个检测内存泄露的开源类库,非常强大
- GT:腾讯出的一款检测app性能的app,需要你的项目先集成它,才能使用,也是功能很全面强大