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

问题

  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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容