避免主线程冻结时的UIWebView试图阻挡地锁定网络线(Avoid main thread fre

2019-08-06 18:33发布

所有UIWebViews中共享一个网络线程。

当其中一人被init -ed分,从上海华等去除,它们将尝试锁定在主线程的线程网络的阻塞方式,从而暂时冻结了主线程的运行循环。

如果Web线程繁忙,如同时做长同步XMLHttpRequest ,这可能会阻塞很长一段时间的主线程。

是否有办法避免这种情况?

如果我能修改的UIWebView,我只是做锁定尝试非阻塞的,但显然事实并非如此,因此我在寻找其他的巧妙构思。

Answer 1:

长期和短期的是:避免做任何阻止的时间显著量的网络线( window.alertwindow.promptXMLHttpRequest.open('GET', url, false) ,可能还有其他人)

此外,避免调用该锁的线程网页,然后立即做的事情发生,因为一旦控制权返回运行循环网线只有解锁很长一段时间的方法。 (实施例:呼叫-[UITextView setText:]然后主线程上读出的文件同步)



Answer 2:

你不能同步XHR,因为这将导致跨域策略错误。



文章来源: Avoid main thread freezes when UIWebView tries to blockingly lock the web thread