在Android开发过程中,我们经?;嵊龅紸pp启动慢、页面跳转慢、事件响应慢、滑动和动画卡顿、内容显示慢等问题,因此要对项目进行性能优化,那么该怎么进行性能优化呢?
我们从以下几个方面进行入手,讲解一下如何对Android的性能进行优化:
- 启动优化
- 内存优化
- 布局优化
- 卡顿优化
- 网络优化
- 电量优化
- 稳定性优化
1.启动优化
- 预览窗口优化:将App启动页背景设置成闪屏页图片,可以让用户无感知平滑过渡进入App中;
- 业务梳理优化:在App启动的过程中,除Activity之外的组件启动要谨慎,把非必要耗时操作延后处理,必要耗时操作考虑在工作线程进行;
- 尽量避免启动时在主线程做密集繁重的工作,如:避免 I/O 操作、反序列化、网络操作、锁等待等;
- 对??橐约暗谌娇獍葱杓釉?,采取分步加载、异步加载、延期加载等策略;
- 利用线程池管理线程,避免创建大量线程,造成 CPU 竞争,导致主线程时间片减少;
- 启动过程中,尽量避免频繁创建的大量对象,减少 GC 给启动性能带来的卡顿影响;
- 对主页面进行布局优化,主页面的数据预加载或懒加载,大大缩短启动时间。
更多启动优化介绍可以查看下列文档:
App启动优化 这篇文章最后的思维导图很有参考意义
2.内存优化
内存频繁的分配和回收,当分配速度大于回收速度时,最终会产生OOM。因此我们要对内存进行优化,减少不必要的开销
- 能用int就不要用Integer
- 内存复用:视图、对象、图片复用
- 选择最优的数据类型
- 使用注解替换枚举
- 图片内存优化
- 字符串拼接使用StringBuilder或StringBuffer,别用+=
- 内存泄漏处理
常见的内存泄漏场景:- 资源未关闭Cursor、IO流;
- Timer、动画Animator未cancel
- 注册对象未销毁:广播、回调监听等
- 静态变量、单例、Handler、非静态内部类持有可被销毁的数据引用
- 匿名内部类默认隐式地持有外部类的引用
- 容器中的对象未清理
- webview使用单独进程
内存优化的具体介绍网上有很多文章,可以参考:
内存异常处理
未完待续。。。