美文网首页
iOS 检查应用卡顿工具类

iOS 检查应用卡顿工具类

作者: 耿杰 | 来源:发表于2020-04-01 19:40 被阅读0次

    iOS检查界面是否卡顿,通常是监听RunLoop的状态,网上已经有大量的学习教程,这里就不详细描述了。

    最近在学习C++,利用C++编写了一个检查应用卡顿工具类,暂时属于半完成品。

    • 实现思路:开启一个子线程, 分别获取在主线程和子线程下获取时间,对比两个时间的差,是否超过8秒,超过则是耗时函数。

    github:https://github.com/misaka14/WatchDog

    部分代码

    // 子线程开启GJiOSCheckWatchDog
    static void GJiOSCheckWatchDog() 
    {
        // 获取当前时间
        uint64_t curr = GJiOSGetUpTime();
    
        // 获取上一次主线程的时间
        pthread_mutex_lock(&g_watchdog_lock);
        uint64_t last_time = g_last_time;
        pthread_mutex_unlock(&g_watchdog_lock);
        
        // 说明已经开始警告了
        if (last_time && (curr > last_time + WATCHDOG_ALARM))
        {
            // 打印堆栈信息
            GJiOSAnrAlarmHandler(curr - last_time);
        }
    
        // 主线程更新一次时间
        dispatch_async(dispatch_get_main_queue(), ^{
            pthread_mutex_lock(&g_watchdog_lock);
            g_last_time = GJiOSGetUpTime();
            pthread_mutex_unlock(&g_watchdog_lock);
        });
    }
    

    相关文章

      网友评论

          本文标题:iOS 检查应用卡顿工具类

          本文链接:https://www.haomeiwen.com/subject/pvrauhtx.html