Android 性能优化

作者: a57ecf3aaaf2 | 来源:发表于2019-09-26 10:29 被阅读0次

布局优化

  • include 标签。
  • merge 标签。
  • ViewStub 视图。
  • 减少视图绘制:
    1.尽量避免在列表布局中使用 LinearLayout 的 layout_weight 属性(会测量两次)。
    2.能够设置 Gone 的不要设置为 Invisible。
    3.避免在 onDraw 方法中使用大量局部变量。
    4.避免在简单布局中进行过多嵌套。
    5.使用 Layout Inspector、Hierarchy Viewer 工具检查布局层次、手机开发者模式检查过度绘制。

内存优化

  • 使用 IntentService,在任务结完成后及时结束 Service。
  • 在 onLowMemory、onTrimMemory(API 4.0) 中处理资源回收。
  • 避免 Bitmap 资源的浪费。
  • 使用 Android 自带的已优化的数据容器,如 SparseArray、ArrayMap、Pair 等。
  • 谨慎使用依赖注入框架、外部 libs等。
  • 使用 ProGuard 进行代码压缩、优化。
  • 避免在 ListView 的 Adapter 中无条件调用 notifyDataSetChanged() 方法。
  • 静态内部类持有 Activity 优化、耗时操作处理,Lint 检查等。
  • 使用线程池。
  • 避免过多使用枚举类型。
  • 尽量使用静态内部类(JAVA非静态内部类都默认持有外部类的引用)。

避免 OOM

  • 使用 Memory Monitor/Profiler 检查内存泄露。
  • 导出 HPROF 文件,使用 MAT 分析内存泄露。
  • 集成内存检测工具 LeakCanary,检测潜在的内存泄露元凶 。
  • 及时关闭 Closeable 对象。
  • 必要时,使用享元模式、LRU Cache 进行内存优化。

避免 ANR

  • 避免对输入事件的响应时间过长。
  • 避免在 BroadcastReceiver 中处理耗时操作。
  • 避免在主线程中执行大量的耗时操作,耗时操作是导致 ARN 的主要原因。
  • 分析 /data/anr/traces.txt 文件,检查 ANR 发生原因。

本文由 Fynn_ 原创,未经许可,不得转载!

相关文章

网友评论

    本文标题:Android 性能优化

    本文链接:https://www.haomeiwen.com/subject/quegyctx.html