为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第6天 App 卡顿优化

标签:
Android

课程名称:Top团队大牛带你玩转Android性能分析与优化
课程章节:App性能概览与平台化实践
主讲老师:随风绽放

课程内容

1.卡顿介绍及优化工具选择

App 卡顿是非常容易被用户直观感受到的,也是非常影响用户体验的。但是对于开发者来说,卡顿问题有非常难定位,那么卡顿问题有哪些难点呢?

  • 首先产生卡顿问题的原因错从复杂,跟设备(比如内存大小)、跟代码质量都有关系;
  • 其次用户反馈的卡顿问题不容易复现,这跟用户当时的使用状态有很大的关系(比如磁盘空间不足导致 IO 的性能下降),所有最理想的情况是能记录发生卡顿时用户的使用场景。

常用的卡顿优化工具又有哪些呢?
1. CPU Profiler,可以用图形化的形式展示执行时间、调用栈等信息。展示的信息非常全面,甚至可以包括所有的线程信息。缺点是运行时开销严重,导致 App 整体都会变慢。

CPU Profiler 的使用方式是:

Debug.startMethodTracing("");
Debug.stopMethodTracing("");

生成的文件保存在目录:Android/data/packagename/files

2.Systrace,通过 systrace 命令调用 Systrace 工具,可以监控和跟踪 API 的调用、线程的运行情况,生成 Html 报告。要求在 API 18 以上,为了获得更好的兼容性可以使用 TraceCompat。

Systrace 的使用方式是:

python systrace.py -t 10 [other-options] [categories]

Systrace 的特点是轻量级、开销小,能直观反应 CPU 的利用率。

3.StrictMode,是 Android2.3 引入的工具类,是 Android 提供的一种运行时检测机制,能够帮助开发者检测代码中的一些不规范的问题。这些问题包含线程策略和虚拟机策略等。其中线程策略包括:自定义的耗时调用,磁盘的读取操作和网络操作等。虚拟机策略包括:Activity 的泄露,Sqlite 对象泄露和检测实例数量等。

2.自动化卡顿检测方案及优化

前面介绍的三个工具只适合线下实际问题的分析,在线上和测试环节需要自动化检测方案来帮助开发者定位卡顿,记录发生卡顿时的场景。

自动化卡顿检测方案的原理,Android 的消息处理机制是,一个线程不管有多少Handler 都只会有一个 Looper 对象存在,主线程中执行的任何代码都会通过Looper.loop() 方法执行,loop() 函数中有一个 mLogging 对象,
mLogging 对象在每个 message 处理前后都会被调用。
主线程如果发生卡顿,则一定是在 dispatchMessage 方法中执行了耗时操作,然后我们可以通过 mLogging 对象对 dispatchMessage 执行的时间进行监控。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
11
获赞与收藏
16

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消