Android性能优化总结

在Android开发过程中,我们经常会遇到App启动慢、页面跳转慢、事件响应慢、滑动和动画卡顿、内容显示慢等问题,因此要对项目进行性能优化,那么该怎么进行性能优化呢?

我们从以下几个方面进行入手,讲解一下如何对Android的性能进行优化:

  • 启动优化
  • 内存优化
  • 布局优化
  • 卡顿优化
  • 网络优化
  • 电量优化
  • 稳定性优化

1.启动优化

  • 预览窗口优化:将App启动页背景设置成闪屏页图片,可以让用户无感知平滑过渡进入App中;
  • 业务梳理优化:在App启动的过程中,除Activity之外的组件启动要谨慎,把非必要耗时操作延后处理,必要耗时操作考虑在工作线程进行;
  • 尽量避免启动时在主线程做密集繁重的工作,如:避免 I/O 操作、反序列化、网络操作、锁等待等;
  • 对模块以及第三方库按需加载,采取分步加载、异步加载、延期加载等策略;
  • 利用线程池管理线程,避免创建大量线程,造成 CPU 竞争,导致主线程时间片减少;
  • 启动过程中,尽量避免频繁创建的大量对象,减少 GC 给启动性能带来的卡顿影响;
  • 对主页面进行布局优化,主页面的数据预加载或懒加载,大大缩短启动时间。

更多启动优化介绍可以查看下列文档:

Android App 启动优化全记录

Android性能优化笔记(一)——启动优化

App启动优化 这篇文章最后的思维导图很有参考意义

2.内存优化

内存频繁的分配和回收,当分配速度大于回收速度时,最终会产生OOM。因此我们要对内存进行优化,减少不必要的开销

  • 能用int就不要用Integer
  • 内存复用:视图、对象、图片复用
  • 选择最优的数据类型
  • 使用注解替换枚举
  • 图片内存优化
  • 字符串拼接使用StringBuilder或StringBuffer,别用+=
  • 内存泄漏处理
    常见的内存泄漏场景:
    • 资源未关闭Cursor、IO流;
    • Timer、动画Animator未cancel
    • 注册对象未销毁:广播、回调监听等
    • 静态变量、单例、Handler、非静态内部类持有可被销毁的数据引用
    • 匿名内部类默认隐式地持有外部类的引用
    • 容器中的对象未清理
    • webview使用单独进程

内存优化的具体介绍网上有很多文章,可以参考:
内存异常处理

未完待续。。。

你可能感兴趣的:(Android性能优化总结)