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:本地内存泄漏检测工具