1卡顿优化工具
CPU profiler
1.png
2.png
Systrace
3.png
4.png
5.png
StrictMode
6.png
7.png
8.png
9.png
10.png
2自动化卡顿方案及优化
自动化卡顿检测方案原理
系统工具适合线下针对性分析;
线上及测试环节需要自动化监测方案。
原理:
1消息处理机制,一个线程只有一个Looper
2mLogging对象在每个message处理前后被调用
3主线程卡顿,实在dispatchMessage执行耗时操作
就可以通过mLogging对象对dispatchMessage进行监控
11.png
12.png
具体实现:
Looper.getMainLooper().setMessageLogging();
匹配--Dispatching 阈值时间后执行任务(获取堆栈)
匹配--Finished,任务启动之前取消掉
AndroidPreformanceMonitor实战
非侵入式的性能检测组件,通知形式弹出卡顿信息。
原理就是上面的原理
13.png
14.png
问题及优化
15.png
16.png
17.png
3ANR分析与实战
ANR介绍与实战
KeyDispatchTimeout ,5s
BroadcastTimeout ,前台10s,后台60s
ServiceTimeout 前台20s,后台200s
18.png
19.png
模拟演示:
20.png
主线程中也申请这把锁。
21.png
导出文件:
22.png
23.png
24.png
ANR-watchDog原理及实战
25.png
26.png
它继承自线程类,进行+1操作,如果没有执行,说明卡住了。他会封装一个ANRError:通过主线程返回堆栈信息。直接将Error throw出去,程序崩溃。
27.png
28.png
29.png
需要复写listener避免崩溃
30.png
4卡顿单点问题监测方案
背景介绍
自动化卡顿监测方案并不够:比如很多message,但每个时间并不够阈值时间。
体系化的解决方案务必尽早暴露问题。
单点问题:主线程IPC、DB
IPC问题检测
31.png
32.png
33.png
34.png
埋点“android.os,BinderProxy” 的transact
35.png
36.png
5如何实现界面秒开
实现界面秒开
37.png
38.png
界面秒开率统计
39.png
40.png
41.png
比如想hook一下log方法
42.png
43.png
统计一下秒开率
46.png
47.png
48.png
6优雅监控耗时盲区
耗时盲区监控背景
49.png
具体演示:
50.png
adapter里也打个log
51.png
52.png
出现耗时盲区
53.png
耗时盲区监控方案
54.png
55.png
56.png
57.png
58.png
59.png












网友评论