现在安卓系统无论是性能还是体验上其实都不输于iOS,只是因为手机厂商多而杂,他们会改源码,自定义系统,最后又过一遍不同开发水平工程师的手,导致很多手机即使在机器上面的跑分非常高,里面的APP运行也有卡顿现象。
而且这种卡顿会随着产品的更新迭代,功能的越发复杂,UI页面的越发丰富,变得更加严重。
但是,产品功能的更新需求,新功能的开发和UI的丰富都是用户的需求,是不可逆的趋势。在这样的情况下,优秀的性能优化人才一直是几大头部互联网公司高价竞聘的对象。
今天在这里根据我自己多年的开发经验来做一下安卓性能优化方案的总结。
性能优化的目的
- 流畅(解决:卡顿)
- 稳定(解决:内存溢出、崩溃)
- 低耗损(解决:耗电快、流量大、网络慢)
- 小安装包(解决:APK过大)
性能优化的方向
- 布局优化
- 绘制优化
- 网络优化
- APK优化
- 内存优化
- 卡顿优化
- 耗电优化
- ListView/RecycleView及Bitmap/图片优化
- 数据库SQLite优化
- 启动优化
- 数据结构优化
- 稳定性优化
性能优化方案
布局优化
本质: 减少View的层级,提高测量、布局和绘制的速度。
常用方案:
- 优先选择LinearLayout布局可以减少View的层级(注意相同组件可能RelativeLayout绘制时间长);
- 使用 < include > 标签抽取常用的布局组件中的共同部分(便于复用);
- 用 < ViewStub > 标签加载不常用的布局,延迟加载(需要的时候在activity中加载出来);
- 用 < Merge > 标签减少布局的嵌套层次
绘制优化
本质:View的onDraw方法要避免执行大量的操作
常用方案:
onDraw中不要创建新的局部对象(避免产生