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。