Todas las UIWebView comparten un único hilo web.Evite que el hilo principal se congele cuando UIWebView intente bloquear de forma bloqueada el hilo web
Cuando uno de ellos es init
-ed, eliminado de superview etc., intentarán bloquear el hilo web del hilo principal de forma bloqueante, congelando temporalmente el ciclo de ejecución del hilo principal.
Si el hilo web está ocupado, p. mientras hace una sincronización larga XMLHttpRequest
, esto puede bloquear el hilo principal durante mucho tiempo.
¿Hay alguna manera de evitar esto?
Si pudiera modificar UIWebView, me gustaría hacer que el bloqueo intente no bloquear, pero obviamente ese no es el caso, entonces estoy buscando otras ideas inteligentes.
Entonces, ¿qué sucede en MobileSafari si una página hace un XHR sincrónico lento? No lo he probado, pero ¿se congela o qué? –
Adquiere el bloqueo del hilo web durante el tiempo que dure la solicitud. Si el hilo principal intenta adquirir el bloqueo, tendrá que esperar a que se complete la solicitud (o tiempo de espera) – rpetrich
Además, debo mencionar que si usa un XHR asíncrono, esto ya no será un problema (es decir, xhr. open ('GET', url, true)) – rpetrich