Android卡顿问题分析方法

卡顿直接原因:绘制一帧的时间>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——外部内存分配失败时触发;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值