Android性能优化方法总结
这段时间好好总结了一下Android性能优化的内容。对于其中的各种原理和各种工具的使用方法这里就不多做介绍了,相关资料确实相当多。下面就是我对于常见的性能优化方法的一个简单的总结。
内存优化原则
- 尽量不要在循环中创建很多临时变量。
- 可以引入大型的循环拆分、分段或者按需执行。
- 引入SDK库和调用新的系统API时需要考虑成本。
- 注意避免内存泄漏,这里推荐QZONE团队的一篇文章
- 通过仔细统计和调整dex文件的顺序后,往往也能优化很多内存空间。
耗电量优化原则
- 当应用推到后台的时候,尽量减少应用的主动运行,防止CPU占用率异常。
- 前台运行的时候,不要去注册wake lock,此时的注册不仅没有意义,还会被计算到应用电量消耗中。注册后也要记住及时释放。
- 合理的设置手机各种传感器的使用时长和使用频率。
流畅度优化原则
- 布局优化
- 尽量多使用RelativeLayout和LinearLayout,不要使用绝对布局。
- 使用
标签对布局进行复用。 - 使用ViewStub标签来加载一些不常用的布局。
- 动态地inflation view性能要比setVisiblity性能要好。
- 使用
标签减少布局的嵌套。 - 去掉多余的背景颜色,减少过度绘制。
- 对于多层Layout只要留最上面一层的背景颜色即可。
- 对于使用Selector做背景的Layout,可将normal状态的color设置为“@android:color/transparent”。
- 对于需要ImageView和TextView组合使用的场景可以使用compound drawables来代替。
- 尽量避免使用layout_weight。
- UI线程优化
- 不要阻塞UI线程,即将占用CPU较多的数据操作尽可能放在一个单独的线程中进行。特别是针对网络访问、数据库查询和复杂的算法。
- 不要在UI线程之外操作UI。
- 避免在View的绘制过程中做对象的分配操作。
网络优化原则
- 应用与后台服务器进行交互时,每次只在需要有变化的数据的时候再进行交互,数据不发生变化的时候不要重复传输。
- 在非WIFI的情况下,应用后台运行时尽量不去拉取。
- 对于日志传输,缓存下来并周期性的统一上报。
- 对于非WIFI情况下较费流量的功能,可以适当降低通信频率。
- 尽量合并网络请求以减少请求次数。
安装包瘦身优化原则
- 代码部分
- 删去未被引用的变量、方法和类等。
- 降低代码冗余度,提高复用率。
- 减少方法数。
- 避免在内部类中访问外部类等私有方法/变量。
- 避免调用派生类中的未被覆盖的方法。
- 去掉部分类中不需要的get、set方法。
- 代码混淆也能精简安装包。
- 资源部分
- 删去冗余资源。
- 进行资源混淆。
- 图片压缩,尽量使用JPG格式的图片,.9图化,使用频率较低的图片可以进行网络化。
- 对安装包可以进行7zip压缩。