Android性能优化

布局优化

1、尽量减少布局文件的层级

2、采用标签:<include><merge>ViewStub<include>主要用于布局重用。<merge>一般和<include>配合使用,可以减少布局的层级。ViewStub提供按需加载的功能,需要是才会将ViewStu中的布局加载到内存。

绘制优化

绘制优化是指View的onDraw方法要避免执行大量地操作。

1、onDraw中不要创建新的局部对象。因为onDraw可能会被频繁的调用而产生大量临时对象,占用内存且频繁gc

2、onDraw中不要做耗时任务,也不能执行成千上万循环操作,会抢占CPU时间片,导致绘制过程不顺畅。View的绘制帧率保证在60fps是最佳。

内存泄漏优化

1、静态变量导致的内存泄漏

2、单列模式导致的内存泄漏

3、属性动画导致的内存泄漏

响应速度优化和ANR日志分析

避免在主线程做耗时操作,耗时操作放到子线程中,采用异步方式执行。

线程优化

线程优化的思想是采用线程池,避免程序中存在大量地Thread。线程池可以重用内部的线程,避免线程的创建和销毁所带来的开销,也能有效地控制线程的最大并发数,避免大量地线程因互抢系统资源而导致阻塞现象。

优化建议

  • 避免创建过多的对象
  • 不要过多使用枚举,枚举占用的内存空间比整形大
  • 常量使用static final来修饰
  • 适当使用软引用和弱引用
  • 采用内存缓存和磁盘缓存
  • 尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄漏