检测主线程是否被锁定/繁忙(IOS)

4

有没有办法检测主线程是否被锁定/繁忙(即无法响应触摸事件)?

可能的方法: 1. 检查dispatch_get_main_queue的大小(但我不知道如何操纵这个对象来查看其大小) 2. [[UIApplication sharedApplication] isIgnoringInteractionEvents] 但是这种方法只能有时起作用。


你能给我们更多的背景信息吗?你为什么想要这样做? - John Estropia
您可能希望这样做以改善应用程序的响应速度。我也在尝试找到一种方法来检测阻塞主线程超过X秒的调用。当然,您可以使用时间分析器,但它无法显示 UI 线程(主线程)被阻塞的绝对时间。 - Kostia Kim
你可以尝试打印正在运行的线程的ID号,从而获得一些直觉,了解当前运行的线程。 - Mike.R
1个回答

4

使用工具“时间分析器”并找到有关阻塞主线程的线索。

例如: 我发现某个方法正在运行主线程的12.7% CPU 时间。 然后我发现它的名称为“waitingThread”。看起来该方法正在阻塞主线程。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接