所有 UIWebView 共享一个 Web 线程。
当其中之一是init
-ed,从超级视图等中删除,它们将尝试以阻塞方式从主线程锁定 Web 线程,从而暂时冻结主线程的运行循环。
如果网络线程繁忙,例如在进行长同步时XMLHttpRequest
,这可能会长时间阻塞主线程。
有办法避免这种情况吗?
如果我可以修改 UIWebView,我只需使锁定尝试成为非阻塞,但显然情况并非如此,所以我正在寻找其他聪明的想法。
总而言之,就是:避免做任何长时间阻塞 Web 线程的事情(window.alert
, window.prompt
, XMLHttpRequest.open('GET', url, false)
,可能还有其他)
另外,避免调用锁定 Web 线程的方法,然后立即执行一些需要很长时间的操作,因为只有在控制权返回到运行循环后,Web 线程才会解锁。 (例如:致电-[UITextView setText:]
然后在主线程上同步读取文件)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)