android常见问题之卡顿原因与分析解决

其实面试的时候需要思路清晰的都描述出来还是要靠嘴巴去说,虽然自己当卡顿的时候知道去检测,但是平时做项目很少去在意,除非是非常明显了,所以遇到这种问题有点虚。

卡顿一般是主线程引起的
主线程进行了耗时操作如网络访问、大文件的读写操作.
频繁的gc引发卡顿
死锁
内存抖动 ,
view绘制频繁(过度绘制)/布局重叠。嵌套过多
绘制间隔16毫秒,
开发者模式-勾选布局什么的显示 检查,红色的表示重叠骨朵

卡顿/anr定位:
用Allocation Tracing来定位大致的情况
用TraceView来确定详细的问题所在。

打印函数执行时间,
查看/data/anr文件夹里面的trace.txt

布局重叠可以减少重叠,或者用裁剪把相交的地方但是不显示的地方进行裁剪
hierachy view查看布局节点。

1.如何找出里面没用的view呢?或者减少不必要的view嵌套。
工具:Hierarchy Viewer检测

优化:
当我们的布局是用的FrameLayout的时候,我们可以把它改成merge
可以避免自己的帧布局和系统的ContentFrameLayout帧布局重叠造成重复计算(measure和layout)
ViewStub:当加载的时候才会占用。不加载的时候就是隐藏的,仅仅占用位置。

三个圆点分别代表:测量、布局、绘制三个阶段的性能表现。
绿色:渲染的管道阶段,这个视图的渲染速度快于至少一半的其他的视图。
黄色:渲染速度比较慢的50%。
红色:渲染速度非常慢。

三个圆点分别代表:测量、布局、绘制三个阶段的性能表现。
1)绿色:渲染的管道阶段,这个视图的渲染速度快于至少一半的其他的视图。
2)黄色:渲染速度比较慢的50%。
3)红色:渲染速度非常慢。

![Y_%}EWE_OKTWZ21T~GKOI1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值