所有UIWebViews中共享一个网络线程。
当其中一人被init
-ed分,从上海华等去除,它们将尝试锁定在主线程的线程网络的阻塞方式,从而暂时冻结了主线程的运行循环。
如果Web线程繁忙,如同时做长同步XMLHttpRequest
,这可能会阻塞很长一段时间的主线程。
是否有办法避免这种情况?
如果我能修改的UIWebView,我只是做锁定尝试非阻塞的,但显然事实并非如此,因此我在寻找其他的巧妙构思。
所有UIWebViews中共享一个网络线程。
当其中一人被init
-ed分,从上海华等去除,它们将尝试锁定在主线程的线程网络的阻塞方式,从而暂时冻结了主线程的运行循环。
如果Web线程繁忙,如同时做长同步XMLHttpRequest
,这可能会阻塞很长一段时间的主线程。
是否有办法避免这种情况?
如果我能修改的UIWebView,我只是做锁定尝试非阻塞的,但显然事实并非如此,因此我在寻找其他的巧妙构思。
长期和短期的是:避免做任何阻止的时间显著量的网络线( window.alert
, window.prompt
, XMLHttpRequest.open('GET', url, false)
,可能还有其他人)
此外,避免调用该锁的线程网页,然后立即做的事情发生,因为一旦控制权返回运行循环网线只有解锁很长一段时间的方法。 (实施例:呼叫-[UITextView setText:]
然后主线程上读出的文件同步)
你不能同步XHR,因为这将导致跨域策略错误。