UIWebViewがWebスレッドをブロックしてロックしようとしたときにメインスレッドがフリーズしないようにします
-
07-07-2019 - |
質問
すべてのUIWebViewは単一のWebスレッドを共有します。
それらの1つが init
で処理され、スーパービューなどから削除されると、メインスレッドからWebスレッドをブロックする方法でロックしようとするため、一時的に実行ループがフリーズしますメインスレッド。
ウェブスレッドがビジーの場合、たとえば長い同期 XMLHttpRequest
を実行している間、これによりメインスレッドが長時間ブロックされる可能性があります。
これを回避する方法はありますか?
UIWebViewを変更できる場合は、ロックをブロックしないようにしますが、明らかにそうではないため、他の賢いアイデアを探しています。
解決
長所と短所:Webスレッドをかなりの時間ブロックするものは何もしない( window.alert
、 window.prompt
、 XMLHttpRequest.open( 'GET'、url、false)
、場合によってはその他)
また、Webスレッドをロックするメソッドを呼び出してから、制御が実行ループに戻された後にのみWebスレッドがロック解除されるため、すぐに長時間かかる処理を行わないでください。 (例:-[UITextView setText:]
を呼び出してから、メインスレッドで同期的にファイルを読み取ります)
他のヒント
クロスドメインポリシーエラーが発生するため、同期xhrを作成できません。
所属していません StackOverflow