您的位置:首页 > 移动开发 > Android开发

Android卡顿问题分析方法

2017-08-10 16:39 627 查看
卡顿直接原因:绘制一帧的时间>16ms
根本原因
1)UI线程做了耗时操作(严重ANR)
2)布局过于复杂,嵌套多,overdraw
3)内存GC被频繁触发
分析方法
1)HierarchyViewer会显示绘制每个view时(onMeasure、onLayout和onDraw的耗时),找出哪个view的绘制导致了掉帧,优化其布局;
2)设置->开发者选项->调试GPU过度绘制(overdraw)
3)Android Studio 鼠标放在代码区点击右键->Analyze->Inspect Code–>界面选择你要检测的模块->点击确认开始检测,会提示布局及逻辑的问题
4)Traceview定位具体耗时的方法
优化策略
1)
overdraw:优化布局层级(多在xml中使用include标签复用布局、使用merge标签去除不必要的布局层级(配合include使用,即include的布局的根节点不是RelativeLayot或Linearlayout二十merge标签)、使用ViewStub标签实现按需加载)、移除不必要的背景、invisible尽量用gone代替、onDraw中尽量用canvas.clipRect()指定绘制区域
2)GC频繁导致内存抖动:
GC原因:GC_MALLOC——内存分配失败时触发;GC_CONCURRENT——当分配的对象大小超过一个限定值(不同系统)时触发;GC_EXPLICIT——对垃圾收集的显式调用(System.gc())
;GC_EXTERNAL_ALLOC——外部内存分配失败时触发;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 卡顿