Android性能优化总结

192 阅读2分钟

一、布局优化

1. 减少布局嵌套层级:

  • 使用ConstraintLayout书写布局
  • 使用includemerge等标签
  • 必要时使用自定义控件

2. 延迟加载布局

  • 使用ViewStup可以在代码中动态加载布局

3. 避免在主线程进行耗时操作

我们可以通过手机开发者模式下的调试GPU过度绘制GPU呈现模式分析两个功能检测UI是否被过度绘制了。

二、内存优化

内在泄漏主要应注意两点:

  1. 避免生命周期长的对象引用生命周期短的对象。
  2. 本地资源Java虚拟机无法自动回收,用完后要及时关闭。

内存泄漏主要有以下几种情况:

  1. 子线程或Handler持有Activity的强引用。可以使用ApplicationContext或软引用解决此问题。
  2. 非静态内部类默认会持有外部类的强引用导致内存泄漏。建议使用外部类或静态内部类。
  3. 全局静态集合或单例对象持有其它短生命周期的对象时,用完没有及时释放,也会导致内存泄漏。
  4. 及时关闭BroadcastReceiver、Cursor、Stream、TypedArray等对象,避免内存泄漏。

我们可以使用LeakCanary监控APP的内存泄漏情况。

在解决了内存泄漏的问题后,我们可以从以下几个方面对APP进行内存优化:

  1. 尽量避免大量或频繁new对象
  2. 使用线程池代替new Thread()
  3. 对图片进行压缩和三级缓存

三、接口优化

  1. 对于耗时或数据量较大的接口,可以给接口做缓存并加上版本控制,以实现接口的增量请求,可以极大地提升接口的响应速度。

四、资源优化

  1. 使用TinyPng压缩图片
  2. 使用Proguard启用代码混淆
  3. 使用Android Lint工具检查并删除无用的资源文件