تجنب تجميد موضوع الرئيسية عندما يحاول UIWebView لقفل blockingly للموضوع على شبكة الإنترنت

StackOverflow https://stackoverflow.com/questions/1431594

  •  07-07-2019
  •  | 
  •  

سؤال

جميع UIWebViews مشاركة موضوع على شبكة الإنترنت واحد.

عند واحد منهم هو init افتتاحية، وإزالتها من superview الخ، وسوف محاولة لقفل موضوع على شبكة الإنترنت من الخيط الرئيسي بطريقة حظر، وبالتالي تجميد مؤقت حلقة المدى للموضوع الرئيسي.

وإذا كان موضوع الشبكة مشغولة، على سبيل المثال في حين تقوم XMLHttpRequest متزامن لفترة طويلة، وهذا قد يؤدي إلى حجب الترابط الرئيسي لفترة طويلة.

هل هناك طريقة لتجنب هذا؟

إذا أنا يمكن تعديل UIWebView، ويهمني ان تجعل مجرد محاولة قفل عدم عرقلة، ولكن من الواضح أن الأمر ليس كذلك، لذلك أنا أبحث عن أفكار ذكية أخرى.

هل كانت مفيدة؟

المحلول

ومنذ فترة طويلة وقصيرة من ذلك هو: تجنب القيام بأي عمل يسد موضوع على شبكة الإنترنت لفترة طويلة من الزمن (window.alert، window.prompt، XMLHttpRequest.open('GET', url, false)، وربما غيرها)

وأيضا، تجنب استدعاء الأساليب التي قفل موضوع على شبكة الإنترنت ومن ثم القيام بشيء أن يستغرق وقتا طويلا مثل موضوع على شبكة الإنترنت مباشرة غير مؤمن فقط مرة واحدة يتم إرجاع التحكم إلى حلقة التشغيل. (مثال: دعوة -[UITextView setText:] ثم قراءة ملف بشكل متزامن على الترابط الرئيسي)

نصائح أخرى

وأنت لا يمكن أن تجعل XHR متزامن لأن هذا سوف يؤدي إلى crossdomain أخطاء السياسة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top