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压缩。