布局优化
- 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 检查等。
- 使用线程池。
- 避免过多使用枚举类型。
- 尽量使用静态内部类。
避免 OOM
- 使用 Memory Monitor 检查内存泄露。
- 导出 HPROF 文件,使用 MAT 分析内存泄露。
- 集成内存检测工具 LeakCanary,检测潜在的内存泄露元凶 。
- 及时关闭 Closeable 对象。
- 必要时,使用享元模式、LRU Cache 进行内存优化。
避免 ANR
- 避免对输入事件的响应时间过长。
- 避免在 BroadcastReceiver 中处理耗时操作。
- 避免在主线程中执行大量的耗时操作,耗时操作是导致 ARN 的主要原因。
- 分析 /data/anr/traces.txt 文件,检查 ANR 发生原因。
本文由
Fynn_ 原创,未经许可,不得转载!
网友评论