卡顿分析和优化方法

卡顿分析技巧

首先,看log:

  • 主线程message卡顿 Looper  : Slow dispatch took  4088ms/OpenGLRenderer: Davey! duration=4088ms    
  • Skipped 494 frames!  The application may be doing too much work on its main thread.
  •  Binder调用慢:Slow Binder /  binder_sample 
  • OpenGLRenderer: dequeueBuffer failed
  •  E SurfaceFlinger: Attempted to create an ExternalTexture for layer lrc#0 that exceeds render target size limit. 

其次,看系统资源是否充足,比如内存不足,cpu是否充足,是否存在cpu抢占(后台子线程可能抢占了主线程cpu)

再次,如果能复现,但不知道具体哪个函数耗时,抓systrace(perfetto更好)手动添加trace埋点代码,因为系统埋点无法定位一些重点函数

再次,接入插桩工具打印出每个函数的耗时,使用andoridstudio的traceview

最后,看下系统是否有异常,所有的app都卡,比如smmu_service 异常报SMMU Fault error 

卡顿优化方法:

  1. 减少布局层级
  2. 耗时任务放在子线程
  3. 同步binder调用改成异步
  4. 避免频繁全局刷新界面
  5. 等等
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值