[发明专利]IOS应用的主线程卡顿监测方法、介质、设备及系统有效
| 申请号: | 201810065370.1 | 申请日: | 2018-01-23 |
| 公开(公告)号: | CN108197032B | 公开(公告)日: | 2021-04-27 |
| 发明(设计)人: | 张骏;张文明;陈少杰 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 武汉智权专利代理事务所(特殊普通合伙) 42225 | 代理人: | 张凯 |
| 地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | ios 应用 主线 程卡顿 监测 方法 介质 设备 系统 | ||
1.一种IOS应用的主线程卡顿监测方法,其特征在于:
S1,定义一个Objective-C的类,并实现该类的单例加载;在Objective-C的类中增加一个属性:信号量;在所述Objective-C的类中增加通知观察者,使用通知观察者监听主线程消息循环的状态变化事件,设置当所述通知观察者监听到状态变化事件时发出信号量;
S2,创建一个第一子线程,通过所述第一子线程等待信号量,根据收到信号量的时间和所述主线程消息循环的当前状态判断是否发生卡顿;若是,进入步骤S3;若否,进入步骤S4;
S3,返回发生卡顿;
S4,刷新阻塞时间,返回步骤S2;所述步骤S3还包括创建第二子线程,通过所述第二子线程抓取所述IOS应用运行时主线程的堆栈信息并存入本地数据库;根据收到信号量的时间判断是否发生卡顿的方法是:
先判断收到信号量的时间是否大于预设的阻塞时间阈值;若是,再判断所述主线程消息循环是否为kCFRunLoopBeforeSources状态或kCFRunLoopAfterWaiting状态;若均是,判断为发生卡顿;否则,判断为发生卡顿。
2.如权利要求1所述的一种IOS应用的主线程卡顿监测方法,其特征在于:所述阻塞时间阈值为500ms。
3.一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至2任一项所述的方法。
4.一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:处理器执行计算机程序时实现权利要求1至2任一项所述的方法。
5.一种IOS应用的主线程卡顿监测系统,其特征在于,包括:
监听模块,其用于定义一个Objective-C的类,并实现该类的单例加载;在Objective-C的类中增加一个属性:信号量;在所述Objective-C的类中增加通知观察者,使用通知观察者监听主线程消息循环中的状态变化事件,设置当所述通知观察者监听到状态变化事件时发出信号量;
卡顿监测模块,其用于创建一个第一子线程,通过所述第一子线程等待信号量,根据收到信号量的时间和所述主线程消息循环的当前状态判断是否发生卡顿;若是,返回发生卡顿;若否,刷新阻塞时间,继续通过所述第一子线程等待信号量。
6.如权利要求5所述的一种IOS应用的主线程卡顿监测系统,其特征在于:所述主线程卡顿监测系统还包括堆栈抓取模块,其用于判断为发生卡顿时,创建第二子线程,通过所述第二子线程抓取堆栈并存入本地数据库。
7.如权利要求5所述的一种IOS应用的主线程卡顿监测系统,其特征在于:所述卡顿监测模块用于:
先判断收到信号量的时间是否大于预设的阻塞时间阈值;若是,再判断所述主线程消息循环是否为kCFRunLoopBeforeSources状态或kCFRunLoopAfterWaiting状态;若均是,判断为发生卡顿;否则,判断为发生卡顿。
8.如权利要求6所述的一种IOS应用的主线程卡顿监测系统,其特征在于:所述阻塞时间阈值为500ms。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810065370.1/1.html,转载请声明来源钻瓜专利网。





