想让安卓app不再卡顿?看这篇文章就够了 (5)

实际使用中,为了增强跟进效果,我们设立一些规则,比如卡顿重复上报超过100次,卡顿耗时达到1000ms等,自动提tapd bug单给开发处理,系统也会自动更新卡顿问题的修复情况和数据,开发只需定期review tapd bug单处理修复卡顿问题即可,整个卡顿系统从监控,上报,分析,聚类,展示,提单到回归,整个流程自动化实现,不再需要人工介入。

实际应用效果

1、接入产品:微信读书,企业微信,QQ邮箱

2、应用场景:现网用户的监控,发布前测试的监控,每天自动化运行的监控

3、发现问题:三个多月时间,归类后的卡顿过万,提bug单约500,开发已解决超过200个卡顿问题

卡顿监控的组件化

考虑到Android卡顿监控的通用性,除了应用于Android WeRead中,我们也推广到广研的其他产品中,如企业微信,QQ邮箱。因此,在开发GG的努力下,推出了卡顿监控库 ,其他Android产品可快速接入卡顿监控的SDK来监控app卡顿情况。

目前monitor卡顿监控库主要有监控主线程卡顿情况,获取平均帧率使用情况,高频采样和获取卡顿信息等基本功能。这里要注意几点:

1、采样堆栈信息的频率和卡顿耗时的阈值均可在SDK中设置;

2、SDK默认判断一个卡顿是否发生的耗时阈值是80ms(5*16.6ms)

3、采样堆栈的频率是52ms(约3帧+,尽量错开系统帧率的节奏,堆栈可尽量落到绘制帧过程中)

4、启动监控后,卡顿日志就会不断通过内部的writer输出,实现MonitorLogWriter.setDelegate才能获取这些日志,具体的日志落地和上报策略因为各个App不同所以没有集成到SDK中

5、monitor start后一直监控主线程, 包括切换到后台时也会,直到主动stop或者app被kill。所以在切后台时要主动stop monitor,切前台时要重新start

1.组件引入方式

img

2.主线程卡顿监控的使用方式

1)启动监控

img

2)停止监控

img

3)获取卡顿信息

img

app中加入监控卡顿SDK后,会实时输出卡顿的时间点和堆栈信息,我们将这些信息写入日志文件落地,同时每天固定场景上报到服务器,如每天上报一次,用户打开app后进行上报等策略。收集不同用户不同手机不同场景下的所有卡顿堆栈信息,可供分析,定位和优化问题。

特别致谢

此文最后特别感谢阳经理(ayangxu)、豪哥(veruszhong)、cginechen对Android卡顿监控组件化的鼎力支持,感谢姑姑(janetjiang)悉心指导与提议!希望卡顿监控系统能越来越多地暴露卡顿问题,在大家的共同努力下不断提升App的流畅体验!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypwgj.html