手记

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

课程名称: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 执行的时间进行监控。

0人推荐
随时随地看视频
慕课网APP