美文网首页
卡顿问题分析-工具使用实录

卡顿问题分析-工具使用实录

作者: new_xd | 来源:发表于2018-12-11 18:44 被阅读0次

问题

  1. 有的时候界面很卡,我们该如何定位?

现状

面试过很多人,对于这个问题,大部分都是这样回答的:

分情况:
1. 启动卡顿,应该看下都有哪些耗时操作,尝试延后执行
2. 滑动卡顿,考虑优化view复用
3. 交互优化,有些是等待IO
另外从 内存泄露 界面布局层次 界面重复渲染方面找问题

虽然不能说是错误的,但是整体的来说都是依靠经验和审代码,很少涉及工具使用,很难做到问题的准确定位,更不用说优化了

实践记录

现象描述

我们有一个界面,打开之后会根据状态自动滑动到第二个tab页,但是在滑动过程中比较卡,期望优化

分析

整个操作涉及两部分:页面启动,tab滑动,
第一部分因为是原位置从无到有,而且有loading,所以用户感知不大,第二部分因为涉及页面内容滑动,所以特别明显。

所谓的卡顿,其实对技术而言就是掉帧,简单说就是界面的渲染流程没能在16ms内完成,所以我们需要知道渲染流程每个阶段大致用了多少时间,哪个过程耗时较多

工具上场

GPU呈现模式分析

打开设置-开发者选项-GPU呈现模式分析,选择在屏幕上显示为条形图。
此时我们可以看到屏幕上多出了很多柱条,条形图含义请参考下面的链接说明。
进行复现操作,我们发现柱条很少,每一个都超出了16ms的准线,而且深绿色偏长,说明我们在主线程做了很多和UI无关的耗时操作。

CPU Profiler

设备连上studio, 打开Android Profiler, 选择CPU,使用说明请参考下面链接。
点击record,进行复现操作,停止record。
检查记录,此时可能有朋友会问这个结果怎么看,我简单说下

因为我们分析的是卡顿,主要看主线程,所以首先选择主线程,然后通过Call chart我们可以看到主线程的方法执行,
一般是loop对事件分发然后各种处理,我在实际操作时就可以看到onCreate执行了多长时间,而其中onCreate里的每个方法执行了多长时间,还有一些切换到主线程的回调执行了多长时间,还有onResume执行了多少时间。

通过这个结果我大概发现了一些造成卡顿的问题:

  1. 部分工具类的实际耗时比想象的长
  2. 网络请求的回调在主线程执行,而其中涉及一些大数据json的解析耗时较长
  3. 部分view是根据数据动态生成的,创建一个自定义view耗时较长,主要原因是view的xml较复杂
  4. Presentation的show方法执行耗时特别长

Systrace

这个工具我也有尝试,但是效果不好,使用说明请参考下面链接。
好处是它会直接告诉你一些程序的问题,比如主线程调度delay、draw方法执行过程、measure时间过长,
坏处或者说不好用的地方,在我的电脑上 Ubuntu 16.04, 这个工具无法指定检测时长无论是否指定-t参数,而且有时会记录其他app而不记录我想检测的app,即使添加-a参数,另外有一些时候生成的报告无法打开,好像是时间设置问题,但是网上没有搜索到相关解决方案。大家有空可以尝试下。

解决方案

将耗时操作移入子线程,并且注意子线程的优先级要低于主线程。

参考

GPU呈现模式分析
CPU Profiler
Systrace

相关文章

  • 卡顿问题分析-工具使用实录

    问题 有的时候界面很卡,我们该如何定位? 现状 面试过很多人,对于这个问题,大部分都是这样回答的: 虽然不能说是错...

  • Android卡顿优化 | 卡顿及其优化工具概述及StrictM

    项目GitHub 本文要点一般使用的卡顿优化工具卡顿问题概述卡顿问题分析难点关于CPU Profiler关于Sys...

  • 卡顿优化

    发现卡顿点 1. 使用instruments分析工具: 可以找到耗时多的代码 2. 使用代码,添加FPS监控 通过...

  • System trace traceview分析工具

    分析Android系统app性能问题,使用Systrace文件分析找出引起系统卡顿,反应慢的原因,开机慢等问题 1...

  • Android开发页面帧率优化有感

    Android APP 优化工具分析Android App优化之消除卡顿Android性能优化:卡顿优化Andro...

  • 应用卡顿问题分析

    1.应用卡顿原理分析 卡顿问题的表现启动卡顿:启动白屏和启动动画卡顿运行卡顿:点击相应慢,列表滑动卡,动画卡顿 原...

  • 卡顿问题分析

    这几天在把几个副本活动从之前的本服转化到跨服,需要对一些代码的改动。由于这几个之前不是我写的,然后大概看了下其中一...

  • Android 使用 TraceView 分析卡顿问题

    背景 发现App的启动速度比较慢,但是到底慢在哪里,需要调查! 使用 TraceView 来分析 TraceVie...

  • 性能优化工具之TraceView

    1、TraceView工具能做什么? 从代码层面分析性能问题,针对每个方法来分析,比如当我们发现我们的应用出现卡顿...

  • Android性能优化总结

    性能优化: 1. 卡顿优化 绘制问题布局复杂导致 -》 使用hierarchy viewer分析。减少嵌套层级,使...

网友评论

      本文标题:卡顿问题分析-工具使用实录

      本文链接:https://www.haomeiwen.com/subject/xomehqtx.html