Tất cả UIWebViews chia sẻ một chuỗi web đơn lẻ.Tránh chủ đề chính bị đóng băng khi UIWebView cố khóa chặn chủ đề web
Khi một trong số đó là init
-ed, bị xóa khỏi superview, v.v., chúng sẽ cố gắng khóa chuỗi web khỏi sợi chính theo kiểu bị chặn, do đó tạm thời làm lạnh vòng lặp chạy của chuỗi chính.
Nếu chuỗi web bận, ví dụ: trong khi thực hiện đồng bộ dài XMLHttpRequest
, điều này có thể chặn luồng chính trong một thời gian dài.
Có cách nào để tránh điều này không?
Nếu tôi có thể sửa đổi UIWebView, tôi chỉ cần thực hiện khóa không chặn, nhưng rõ ràng đó không phải là trường hợp, vì vậy tôi đang tìm kiếm các ý tưởng thông minh khác.
Vậy điều gì sẽ xảy ra trong MobileSafari nếu một trang thực hiện XHR đồng bộ chậm? Tôi đã không thử nghiệm nó, nhưng nó chỉ đóng băng hoặc những gì? –
Nó sẽ khóa khóa của chuỗi web trong suốt thời gian yêu cầu. Nếu chủ đề chính sau đó cố gắng lấy khóa, nó sẽ phải chờ yêu cầu hoàn thành (hoặc hết giờ) – rpetrich
Ngoài ra, tôi nên đề cập rằng nếu bạn sử dụng XHR không đồng bộ, điều này sẽ không còn là vấn đề nữa (tức là xhr. Mở ('GET', url, true)) – rpetrich