Android app 性能优化

463 阅读1分钟

1.绘制优化

60FPS,16ms规则

查看基本面:

开发者选项:Profile GPU Rendering、过度绘制

Systrace:预览,深度有限

Traceview:单次执行耗时的方法,执行次数多的方法

布局优化:

Hierarchy Viewer:检查布局嵌套和绘制的时间

Android Lint:代码静态检查,发现潜在问题,给出优化建议

合理运用布局,include,merge,ViewStub,避免过度绘制

2.内存优化

内存泄漏:没有用的对象到GC Roots是可达的(对象被引用),导致GC无法回收该对象。

场景:

非静态/匿名内部类持有外部类的引用;

静态实例持有短生命周期Context对象;

WebView;

资源未释放;

对象未清理;

监听器未关闭

工具:

Profiler:查看基本面,如大内存申请与GC,内存抖动

               Heap dump ,堆存储.hprof

MAT:分析hprof文件

           Dominator Tree:多个实例存在,内存泄漏,引用关系

            Histogram:类的角度,数量

            对比hprof

LeakCanary:本地内存泄漏检测工具